我正在尝试向当前注册的用户发送激活邮件。在邮件正文中,我需要发送类似http://example.com/account/activation?username=d&email=g.Now的链接,以便在本地计算机上进行调试,我手动将其写为localhost:30995 / account /激活的用户名= d&安培;电子邮件=克。但是,当我的端口号发生变化时,我需要重写它。 我试过another question 在这个网站上,但是,编译器给出的错误就像url.action不存在。
因为我对这个解决方案感到困惑,请给我新的解决方案。
答案 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(当然还有主机条目)。
这将避免链接中的端口号。