如何在Startup.cs文件中获取ASP.NET MVC应用程序的基本URL?

时间:2015-12-17 13:45:14

标签: c# asp.net-mvc url startup

我正在寻找一种方法来获取我的Web应用程序的根URL,因此我不必在需要它的地方使用硬编码字符串。

到目前为止,我试图这样做:

var request = HttpContext.Current.Request;

var url = string.Format("{0}://{1}",
          request.Url.Scheme,
          request.Url.Authority);

但遗憾的是,从Startup类执行时,这并没有给我想要的结果,我得到了http://127.0.0.1

3 个答案:

答案 0 :(得分:2)

给定完整的URL,例如" http://example.com/MyApplication/Controller/Action",您可以从System.Web.Hosting.HostingEnvironment.ApplicationHost对象获取一些此类信息。您可以获得以下内容:

ApplicationVirtualPath - > " / MyApplication的" SiteName => "默认网站" 但是,在实际请求进入之前,您将无法获取域名。这是因为IIS网站可以接受许多不同域的请求,其中一些域只能通过DNS获知,并且从未在任何地方配置。

例如,您的网站可以回复mydomain.com和www.mydomain.com。您想要在链接中添加哪个正确的?

您可以将IIS网站配置为仅接受请求特定主机但无法从ASP.NET应用程序检索的连接。

参考:Getting a web application's URI during startup

答案 1 :(得分:-5)

这对我有用:

var request = HttpContext.Current.Request;    
var url = request.Url.Scheme + "://" + request.Url.Authority + request.ApplicationPath.TrimEnd('/');

答案 2 :(得分:-5)

试试这个:

var url = string.Format("{0}://{1}", request.Url.Scheme, request.Url.Host);