提问




    这个问题在这里已有答案:

    

            

  •             在代码隐藏中获取ASP.Net页面的URL [[重复]]
                    
                        10个答案
                    
            

  •     

最佳参考


试试这个:/questions/96029/get-url-of-asp-net-page-in-code-behind


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

其它参考1


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


下面的示例显示了提取URL的不同部分的不同方法


示例:(示例网址)


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


CODE


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);


输出


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。


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

其它参考2


因为这是我的解决方案,感谢Canavar的帖子。


如果您有这样的事情:


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


或者像这样:


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


并且您只想要用户输入的部分然后这将起作用:


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


哪会导致这些:


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

其它参考3


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


string url = Request.Url.Host;


如果从此页面调用,将返回stackoverflow.com


这是完整的分解[19]

其它参考4


request.rawurl将提供当前页面的内容
它提供了您所需的确切路径


使用HttpContext.Current.Request.RawUrl

其它参考5


如果你想得到


localhost:2806 





http://localhost:2806/Pages/ 


然后使用:


HttpContext.Current.Request.Url.Authority

其它参考6


需要global.asax文件中路径/url的人的提示;


如果您需要在 global.asax> Application_Start 中运行此操作,并且您的应用池模式为已集成,则您将收到以下错误:



  请求在此上下文异常中不可用
  的Application_Start




在这种情况下,您需要使用此:



  的 System.Web.HttpRuntime.AppDomainAppVirtualPath



希望能帮助别人..

其它参考7


搜索让我在这个页面上找到了,但这并不是我想要的。发布在这里以防其他人在这个页面上寻找我的土地。


如果您只有字符串值,有两种方法可以做到这一点。


.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


正则表达方式:


获取网址的一部分(正则表达式)

其它参考8


我想它足以返回绝对路径..


 Path.GetFileName( Request.Url.AbsolutePath )


使用System.IO;