现在我有一个在http://127.0.0.1:8081/上运行的MVC应用程序(它实际上在Azure计算模拟器中运行)。浏览器位置栏清楚地显示端口号为8081。
但是,Request.Url
和Request.RawUrl
都给了我http://127.0.0.1:8082/。
我需要发送一封带有URL的电子邮件,因此我需要正确的主机名和端口号。如何可靠地获得实际的真实URL并且没有出现意外偏差?
答案 0 :(得分:3)
你也可以使用:
Request.Url.Host
或使用(如果您想要所有首字母而不仅仅是主持人):
public ActionResult Index()
{
string Domain = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);
return View(Domain);
}
这取自“丰富的守则” How to Retrieve the Current Domain in ASP.NET MVC?
答案 1 :(得分:2)
您可以使用Request.Headers["Host"];
,它将为您提供具有正确端口号的主机名(或IP)。然后你可以重建URL。
答案 2 :(得分:0)
在Azure中作为Azure,您的进程可以在任何端口号上运行。当前请求将被路由到该进程。
这就是为什么你总会有不同的端口号。
最好在web.config文件中指定域名;如果您从配置文件中读取,它对于所有请求将始终相同。