我怎样才能得到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://)。
- MVC2中的Html.Partial(view,model)和Html.RenderPartial(view,model)之间有什么区别(如果有的话)?
- Page.IsPostBack和Page.IsCallBack有什么区别?
- 如何从浏览器读取客户端的机器/计算机名称?
- 安装ASP.NET和Web Tools 2015(RC1 Update 1)后,Visual Studio 2015错误“对象引用未设置为对象的实例”
- Visual Studio中“网站”和“项目”之间的区别
- 我如何才能找出哪些服务器主机LDAP在我的Windows域?
- 检测未保存的更改
- 如何在WebMethod中获取调用者的IP地址?
- 调查Web.Config重复部分的原因的步骤