Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET:获取*真实*原始URL_Asp.net_Url_Url Encoding_Rawurl - Fatal编程技术网

ASP.NET:获取*真实*原始URL

ASP.NET:获取*真实*原始URL,asp.net,url,url-encoding,rawurl,Asp.net,Url,Url Encoding,Rawurl,在ASP.NET中,是否有任何方法可以获取真实的原始URL 例如,如果用户浏览到“”,我希望能够获得“”,而不是“” 我当然希望有一个干净的方法来做这件事,但我可以接受使用反射或访问模糊属性的黑客方法 目前,我尝试在授权头中使用uri(这是可行的),但我不能指望它总是在那里 编辑: 我真正想做的是能够区分“”和“” 看起来ASP.NET首先将“%2F%2F”转换为“/”,然后将斜杠转换为单个斜杠 所以仅仅重新编码是行不通的 Server.HtmlEncode(Request.RawUrl);

在ASP.NET中,是否有任何方法可以获取真实的原始URL

例如,如果用户浏览到“”,我希望能够获得“”,而不是“”

我当然希望有一个干净的方法来做这件事,但我可以接受使用反射或访问模糊属性的黑客方法

目前,我尝试在授权头中使用uri(这是可行的),但我不能指望它总是在那里

编辑:

我真正想做的是能够区分“”和“”

看起来ASP.NET首先将“%2F%2F”转换为“/”,然后将斜杠转换为单个斜杠

所以仅仅重新编码是行不通的

 Server.HtmlEncode(Request.RawUrl);
原始URL被定义为域信息后面的URL的一部分。在URL字符串中,原始URL为/articles/recent.aspx。原始URL包括查询字符串(如果存在)


另请参见:

好吧,您可以将其编码回url编码版本。

我无法在此测试,但这可能是您需要的:

Request.Url.AbsoluteUri

从请求中获取url,url仅对查询字符串部分进行编码,然后将它们连接起来。
请求。RawUrl
将返回应用程序相对路径(包括查询字符串信息),而
请求。url
将返回完整路径(包括查询字符串信息)


有关详细信息,请参阅“”。

我无法测试此功能,因为它仅在IIS中工作,而不在作为Visual Studio一部分的ASP.NET开发服务器中工作,但请尝试:

Request.ServerVariables[“HTTP\u URL”]

另请参见:


以下代码适用于我:

IServiceProvider serviceProvider = (IServiceProvider)HttpContext.Current;
HttpWorkerRequest workerRequest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest));
string realUrl = workerRequest.GetServerVariable("HTTP_URL");
请注意,这仅在IIS上运行时有效,而不在f.x.ASP.NET开发服务器下运行


感谢您在另一个线程中给出了答案并将我指向该线程。

请求中的所有URL都可能已被清除,Request.ServerVariables[“HTTP\U URL”]更准确。这将为我返回预期结果,但它确实需要与HTTP\U主机和HTTP\U查询结合以获得URL的其余部分。这是正确的解决方案。它解决了路径中存在编码时的问题。来自服务器变量的HTTP_URL将显示解码版本,此解决方案提供正确的编码版本。这也将在IIS Express下返回预期结果