如何获取我在C#中的页面的完整url

我需要能够从用户控件获取我所在页面的完整URL。 这只是将一堆Requestvariables连接在一起的问题吗? 如果是这样的话? 还是有更简单的方法?

我通常使用Request.Url.ToString()来获取完整的url(包括querystring),不需要连接。

以下是我通常为这类信息所引用的列表:

 Request.ApplicationPath : /virtual_dir Request.CurrentExecutionFilePath : /virtual_dir/webapp/page.aspx Request.FilePath : /virtual_dir/webapp/page.aspx Request.Path : /virtual_dir/webapp/page.aspx Request.PhysicalApplicationPath : d:\Inetpub\wwwroot\virtual_dir\ Request.QueryString : /virtual_dir/webapp/page.aspx?q=qvalue Request.Url.AbsolutePath : /virtual_dir/webapp/page.aspx Request.Url.AbsoluteUri : http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue Request.Url.Host : localhost Request.Url.Authority : localhost:80 Request.Url.LocalPath : /virtual_dir/webapp/page.aspx Request.Url.PathAndQuery : /virtual_dir/webapp/page.aspx?q=qvalue Request.Url.Port : 80 Request.Url.Query : ?q=qvalue Request.Url.Scheme : http Request.Url.Segments : / virtual_dir/ webapp/ page.aspx 

希望你会发现这个有用的!

 Request.Url.AbsoluteUri 

这个属性做你需要的一切,在一个可疑的电话。

Request.RawUrl

如果您需要完整的URL作为http到查询string的所有内容,则需要连接以下variables

 Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS Request.ServerVariables("SERVER_NAME") Request.ServerVariables("SCRIPT_NAME") Request.ServerVariables("QUERY_STRING") 

更好地使用Request.Url.OriginalStringRequest.Url.ToString() (根据MSDN )

谢谢你们,我用了@Christian和@Jonathan的答案来满足我的具体需求。

 "http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString() 

我不需要担心安全的http,需要servernamevariables,RawUrl处理来自域名的path,并包含查询string(如果存在)。

如果您还需要端口号,则可以使用

 Request.Url.Authority 

例:

 string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString(); if (Request.ServerVariables["HTTPS"] == "on") { url = "https://" + url; } else { url = "http://" + url; } 

对于ASP.NET Core您需要将其拼出来:

 @($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}") 

或者你可以添加一个using语句到你的视图中:

 @using Microsoft.AspNetCore.Http.Extensions 

然后

 @Context.Request.GetDisplayUrl() 

_ViewImports.cshtml可能是这个_ViewImports.cshtml更好的地方