如何在C#中获取当前页面的URL

任何人都可以帮助我得到C#中ASP.NET的当前工作页面的URL吗?

尝试这个 :

string url = HttpContext.Current.Request.Url.AbsoluteUri; // http://localhost:1302/TESTERS/Default6.aspx string path = HttpContext.Current.Request.Url.AbsolutePath; // /TESTERS/Default6.aspx string host = HttpContext.Current.Request.Url.Host; // localhost 

您有时可能需要从URL获取不同的值。

下面的例子展示了提取URL的不同部分的不同方式

示例:(示例URL)

http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2

 Response.Write("<br/> " + HttpContext.Current.Request.Url.Host); Response.Write("<br/> " + HttpContext.Current.Request.Url.Authority); Response.Write("<br/> " + HttpContext.Current.Request.Url.Port); Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsolutePath); Response.Write("<br/> " + HttpContext.Current.Request.ApplicationPath); Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsoluteUri); Response.Write("<br/> " + HttpContext.Current.Request.Url.PathAndQuery); 

OUTPUT

 localhost localhost:60527 60527 /WebSite1test/Default2.aspx /WebSite1test http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString1=2 /WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2 

你可以复制粘贴上面的示例代码,并在不同的URL在asp.net web表单应用程序中运行。

我也推荐阅读ASP.Net路由的情况下,您可能会使用ASP路由,那么你不需要使用传统的URL与查询string。

http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx

只是分享,因为这是我的解决scheme,由于Canavar的职位。

如果你有这样的事情:

 "http://localhost:1234/Default.aspx?un=asdf&somethingelse=fdsa" 

或者像这样:

 "https://www.something.com/index.html?a=123&b=4567" 

而你只需要用户input的部分,那么这将工作:

 String strPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery; String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/"); 

这将导致这些:

 "http://localhost:1234/" "https://www.something.com/" 

如果你只想要http://和第一个斜杠之间的部分

 string url = Request.Url.Host; 

如果从这个页面调用将返回stackoverflow.com

这是完整的细分

request.rawurl将给出当前页面的内容,它给出了你需要的确切path

使用HttpContext.Current.Request.RawUrl

如果你想得到

 localhost:2806 

 http://localhost:2806/Pages/ 

然后使用:

 HttpContext.Current.Request.Url.Authority 

对于需要global.asax文件中的path/ url的用户的提示;

如果您需要在global.asax> Application_Start中运行此应用程序池模式,则您将收到以下错误消息:

Application_Start中的请求在此上下文exception中不可用。

在这种情况下,你需要使用这个:

System.Web.HttpRuntime.AppDomainAppVirtualPath

希望能帮助别人..

search将我引到了这个页面,但这不是我想要的。 张贴在这里,以防其他人正在寻找我在这个页面上的东西。

如果只有string值,有两种方法可以实现。

.NET方式:

和@Canavar一样,但是你可以实例化一个新的Uri对象

 String URL = "http://localhost:1302/TESTERS/Default6.aspx"; System.Uri uri = new System.Uri(URL); 

这意味着你可以使用相同的方法,例如

 string url = uri.AbsoluteUri; // http://localhost:1302/TESTERS/Default6.aspx string host = uri.host // localhost 

正则expression式:

获取URL的部分(正则expression式)

我想它足以返回绝对path..

  Path.GetFileName( Request.Url.AbsolutePath ) 

使用System.IO;