我怎样才能得到ASP.NET中的根域URI?

假设我在http://www.foobar.com上托pipe一个网站。

有没有一种方法,我可以在我的代码后面编程确定“ http://www.foobar.com/ ”(即不必在我的webconfiguration中硬编码)?

HttpContext.Current.Request.Url可以让你得到关于URL的所有信息。 并可以将url分解成碎片。

 string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority); 

Uri :: GetLeftPart方法 :

GetLeftPart方法返回一个包含URIstring最左边部分的string,以part指定的部分结束。

UriPartial枚举 :

URI的scheme和权限部分。

对于还有疑问的人,可以在http://devio.wordpress.com/2009/10/19/get-absolut-url-of-asp-net-application/上find更完整的答案。;

 public string FullyQualifiedApplicationPath { get { //Return variable declaration var appPath = string.Empty; //Getting the current context of HTTP request var context = HttpContext.Current; //Checking the current context content if (context != null) { //Formatting the fully qualified website url/name appPath = string.Format("{0}://{1}{2}{3}", context.Request.Url.Scheme, context.Request.Url.Host, context.Request.Url.Port == 80 ? string.Empty : ":" + context.Request.Url.Port, context.Request.ApplicationPath); } if (!appPath.EndsWith("/")) appPath += "/"; return appPath; } } 
 string hostUrl = Request.Url.Scheme + "://" + Request.Url.Host; //should be "http://hostnamehere.com" 

如果示例Url是http://www.foobar.com/Page1

 HttpContext.Current.Request.Url; //returns "http://www.foobar.com/Page1" HttpContext.Current.Request.Url.Host; //returns "foobar.com" HttpContext.Current.Request.Url.Scheme; //returns "http/https" HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); //returns "http://www.foobar.com" 

要获取整个请求的URLstring:

 HttpContext.Current.Request.Url 

要获得请求的www.foo.com部分:

 HttpContext.Current.Request.Url.Host 

请注意,在某种程度上,你是在ASP.NET应用程序之外的因素的支配下。 如果IISconfiguration为接受您的应用程序的多个或任何主机头,那么通过DNSparsing到您的应用程序的任何域可能会显示为请求Url,具体取决于用户input的内容。

 string domainName = Request.Url.Host 

我知道这是更老,但现在正确的方法是

 string Domain = HttpContext.Current.Request.Url.Authority 

这将获得服务器端口的DNS或IP地址。

 Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$"); string domain = match.Groups[1].Success ? match.Groups[1].Value : null; 

host.com =>返回host.com
s.host.com =>返回host.com

host.co.uk =>返回host.co.uk
http://www.host.co.uk =>返回host.co.uk
s1.www.host.co.uk =>返回host.co.uk

– 添加端口可以帮助运行IIS Express

 Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port 

这也适用于:

stringurl = HttpContext.Request.Url.Authority;

C#示例如下:

 string scheme = "http://"; string rootUrl = default(string); if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on") { scheme = "https://"; } rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString(); 
 string host = Request.Url.Host; Regex domainReg = new Regex("([^.]+\\.[^.]+)$"); HttpCookie cookie = new HttpCookie(cookieName, "true"); if (domainReg.IsMatch(host)) { cookieDomain = domainReg.Match(host).Groups[1].Value; } 

这将特别返回你所问的。

 Dim mySiteUrl = Request.Url.Host.ToString() 

我知道这是一个老问题。 但是我需要相同的简单答案,并且返回正确的内容(没有http://)。