ASP.NET MVC:如何可靠地获取当前请求的真实URL

本文关键字:请求 URL 真实 获取 MVC NET 何可 ASP | 更新日期: 2023-09-27 18:29:11

现在我有一个MVC应用程序正在运行http://127.0.0.1:8081/(它实际上是在Azure计算模拟器中运行的)。浏览器位置栏上清楚地显示端口号为8081。

然而,Request.UrlRequest.RawUrl都给了我http://127.0.0.1:8082/.

我需要发送一封包含URL的电子邮件,所以我需要正确的主机名和端口号。如何可靠地获得真实的URL,而不会出现这种意外的偏差?

ASP.NET MVC:如何可靠地获取当前请求的真实URL

您可以使用Request.Headers["Host"];,它将为您提供具有正确端口号的主机名(或IP)。然后您可以重新构建URL。

您也可以使用:

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);
}

这是取自"丰富的代码"
如何在ASP.NET MVC中检索当前域?

在Azure的云中,您的进程可以在任何端口号的任何地方运行。当前请求将被路由到进程。

这就是为什么您总是有不同的端口号。

最好在web.config文件中指定域名;如果您从配置文件中读取,那么对于所有请求,它总是相同的。