.NET-获取协议,主机和端口
时间:2020-03-05 18:41:52 来源:igfitidea点击:
.NET中是否有一种简单的方法可以快速获取当前协议,主机和端口?例如,如果我在以下URL上:
http://www.mywebsite.com:80 / pages / page1.aspx
我需要退货:
http://www.mywebsite.com:80
我知道我可以使用Request.Url.AbsoluteUri
来获取完整的URL,并且我知道我可以使用Request.Url.Authority
来获取主机和端口,但是我不确定最好的获取方式协议而不会解析URL字符串。
有什么建议?
解决方案
回答
Request.Url将向我们返回请求的Uri。一旦有了它,我们就可以检索几乎所有我们想要的东西。要获取协议,请调用Scheme属性。
样本:
Uri url = Request.Url; string protocol = url.Scheme;
希望这可以帮助。
回答
下面的(C#)代码应该可以解决问题
Uri uri = new Uri("http://www.mywebsite.com:80/pages/page1.aspx"); string requested = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
回答
即使@Rick对此问题的答案是可以接受的,实际上,使用名称不正确的Uri.GetLeftPart()
方法,实际上还有一种更短的方法。
Uri url = new Uri("http://www.mywebsite.com:80/pages/page1.aspx"); string output = url.GetLeftPart(UriPartial.Authority);
但是,GetLeftPart()
有一个问题。如果该端口是该方案的默认端口,它将被删除。由于端口80是http的默认端口,因此在我上面的示例中,GetLeftPart()
的输出将是http:// www.mywebsite.com
。
如果端口号不是80,则将其包括在结果中。
回答
好吧,如果我们在Asp.Net中进行此操作或者可以访问HttpContext.Current.Request
我会说这些是获取它们的更简单,更通用的方法:
var scheme = Request.Url.Scheme; // will get http, https, etc. var host = Request.Url.Host; // will get www.mywebsite.com var port = Request.Url.Port; // will get the port var path = Request.Url.AbsolutePath; // should get the /pages/page1.aspx part, can't remember if it only get pages/page1.aspx
我希望这有帮助。 :)