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

时间:2012-03-27 12:49:29

标签: c# .net asp.net-mvc-3

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

但是,Request.UrlRequest.RawUrl都给了我http://127.0.0.1:8082/

我需要发送一封带有URL的电子邮件,因此我需要正确的主机名和端口号。如何可靠地获得实际的真实URL并且没有出现意外偏差?

3 个答案:

答案 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文件中指定域名;如果您从配置文件中读取,它对于所有请求将始终相同。