ASP.NET: Get *real* raw URL
Solution 1
The following code works for me:
IServiceProvider serviceProvider = (IServiceProvider)HttpContext.Current;
HttpWorkerRequest workerRequest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest));
string realUrl = workerRequest.GetServerVariable("HTTP_URL");
Note that this only works when running on the IIS and not under f.x. ASP.NET Development Server!
Thanks to Lucero for the answer in another thread and Zhaph for pointing me to the thread.
Solution 2
I wasn't able to test this because it only works in IIS and not the ASP.NET Development Server that is part of Visual Studio, but try:
Request.ServerVariables[ "HTTP_URL" ]
Solution 3
See also:
Solution 4
I can't test here, but this might be what you need:
Request.Url.AbsoluteUri
Solution 5
Server.HtmlEncode(Request.RawUrl);
The raw URL is defined as the part of the URL following the domain information. In the URL string http://www.contoso.com/articles/recent.aspx, the raw URL is /articles/recent.aspx. The raw URL includes the query string, if present.
see also:link text
Comments
-
Rasmus Faber almost 2 years
In ASP.NET, is there any way to get the real raw URL?
For example, if a user browse to "http://example.com/mypage.aspx/%2F", I would like to be able to get "http://example.com/mypage.aspx/%2F" rather than "http://example.com/mypage.aspx//".
I would of course like a clean way to do it, but I can live with a hacky approach using reflection or accessing obscure properties.
At the moment, I try to use the uri in the Authorization-header (which works), but I cannot rely on that always being there.
EDIT:
What I really want to do is to be able to distinguish between "http://example.com/mypage.aspx/%2F" and "http://example.com/mypage.aspx/%2F%2F".
It looks like ASP.NET first converts "%2F%2F" into "//" and then converts the slashes into a single slash.
So just re-encoding it is not going to work.
-
Generic Error about 14 yearsAny URLs in Request are potentially already cleaned, Request.ServerVariables["HTTP_URL"] is more accurate.
-
Generic Error about 14 yearsThis returns the expected result for me, though it does need combining with HTTP_HOST and HTTP_QUERY to get the rest of the URL.
-
Richard Adleta almost 10 yearsThis is the right solution. It addresses issues when there is encoding in the path. The HTTP_URL from server variables will display the decoded version and this solution provides the correct encoded version.
-
Vivelin almost 7 yearsThis returns the expected result under IIS Express as well