我正在寻找一种方法来获取我的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
答案 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应用程序检索的连接。
答案 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);