在asp.net mvc 4中的控制器中创建一个url

时间:2013-02-28 08:42:25

标签: asp.net asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-4

我正在尝试向当前注册的用户发送激活邮件。在邮件正文中,我需要发送类似http://example.com/account/activation?username=d&email=g.Now的链接,以便在本地计算机上进行调试,我手动将其写为localhost:30995 / account /激活的用户名= d&安培;电子邮件=克。但是,当我的端口号发生变化时,我需要重写它。 我试过another question 在这个网站上,但是,编译器给出的错误就像url.action不存在。

因为我对这个解决方案感到困惑,请给我新的解决方案。

2 个答案:

答案 0 :(得分:3)

使用带有协议参数的Url.Action重载来生成您的网址:

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

这会生成绝对网址而不是相对网址。协议可以是“http”或“https”。因此,这将在您的本地计算机上返回http://localhost:XXXXX/account/activation?username=d&email=g,并在生产时返回http://example.com/account/activation?username=d&email=g

简而言之,这将在您的网址前面贴上您托管应用的任何域名;然后,您可以根据需要多次更改主机名/端口号/域名。您的链接将始终指向它们来自的主机。这应该可以解决你所面临的问题。

答案 1 :(得分:0)

尝试使用IIS / IIS-Express而不是Visual Studio附带的Casinni Web服务器。

您可以添加绑定以获得正确的URL(当然还有主机条目)。

这将避免链接中的端口号。