2013-02-28 3 views
0

Я пытаюсь отправить почту активации зарегистрированному пользователю. Мне нужно отправить ссылку, например http://example.com/account/activation?username=d&email=g.Now, для отладки на локальном компьютере, я вручную ее напишу как localhost: 30995/account/activation? username = d & email = g. Но, когда меняет номер порта, мне нужно переписать его. Я пробовал another question на этом сайте, но компилятор дает ошибку, как url.action не существует.Создание URL-адреса в контроллере в asp.net mvc 4

Пожалуйста, дайте мне новое решение, так как я смущен этим решением.

ответ

3

Используйте Url.Action перегрузку, которая принимает параметр протокола для генерации URL-адреса:

Url.Action("Activation", "Account", new { username = "d", email = "g" }, "http") 

Это генерирует абсолютное URL, а не относительным. Протокол может быть либо «http», либо «https». Так что это вернет http://localhost:XXXXX/account/activation?username=d&email=g на ваш локальный компьютер и http://example.com/account/activation?username=d&email=g на производство.

Вкратце, это будет придерживаться любого домена, в котором размещается ваше приложение, перед вашим URL-адресом; вы можете изменить имя хоста/номер порта/имя домена столько раз, сколько хотите. Ваши ссылки всегда будут указывать на хост, из которого они были созданы. Это должно решить проблему, с которой вы столкнулись.

0

Попробуйте использовать IIS/IIS-Express вместо веб-сервера Casinni, который поставляется с визуальной студией.

Вы можете добавить привязки, чтобы иметь правильный URL (например, хост-записи).

Это позволит избежать номеров портов в ваших ссылках.

+0

Сэр, я хочу что-то постоянное решение, которое применяется, если я также изменил имя хоста. –