ASP.NET中获取当前域的最佳方法是什么?
时间:2020-03-05 18:53:08 来源:igfitidea点击:
我想知道获取当前域的最佳方法是在ASP.NET中吗?
例如:
http://www.domainname.com/subdir/应该产生http://www.domainname.com
http://www.sub.domainname.com/subdir/应该产生http://sub.domainname.com
作为指导,我应该能够直接在URL上添加一个类似" /Folder/Content/filename.html"的URL(例如,由ASP.NET MVC中的Url.RouteUrl()生成)。
解决方案
回答
根据此链接,一个好的起点是:
Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host
但是,如果域为http://www.domainname.com:500,则此操作将失败。
诸如此类的东西很想解决此问题:
int defaultPort = Request.IsSecureConnection ? 443 : 80; Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + (Request.Url.Port != defaultPort ? ":" + Request.Url.Port : "");
但是,端口80和443将取决于配置。
因此,我们应该像上面Carlos Mu?oz的"已接受答案"中那样使用" IsDefaultPort"。
回答
怎么样:
String domain = "http://" + Request.Url.Host
回答
怎么样:
NameValueCollection vars = HttpContext.Current.Request.ServerVariables; string protocol = vars["SERVER_PORT_SECURE"] == "1" ? "https://" : "http://"; string domain = vars["SERVER_NAME"]; string port = vars["SERVER_PORT"];
回答
其他方式:
string domain; Uri url = HttpContext.Current.Request.Url; domain= url.AbsoluteUri.Replace(url.PathAndQuery, string.Empty);
回答
答案与MattMitchell相同,但作了一些修改。
而是检查默认端口。
Edit: Updated syntax and using Request.Url.Authority as suggested
$"{Request.Url.Scheme}{System.Uri.SchemeDelimiter}{Request.Url.Authority}"