What is the difference between Request.RawUrl
and Request.Url
in ASP.NET?

- 26,085
- 12
- 82
- 103

- 1,247
- 1
- 9
- 17
5 Answers
No one seems to have mentioned that it shows the Raw URL actually received by IIS, before any manipulation may have happened sending it around IIS or your file system with URL rewriting for example.
Say you have set an error page at /error
in an MVC app and you set your webconfig to replace error pages with your custom error page at that location. In this way when getting an error at /faultypage
, the user will get the page at /error
but the url in your browser's address bar will still say www.mysite.com/faultypage
—this is a transfer, or a rewrite.
Now on your error controller if you are to take a peek at Request.Url
, it will be something like www.mysite.com/error
and Request.RawUrl
would say (more usefully?) /faultypage
which is the user's actual request not the page that is currently being executed.

- 8,362
- 6
- 61
- 88

- 13,219
- 9
- 52
- 62
From MSDN:
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
.
This means, you can use rawurl
and do not have to care about through which address the server was called (for instance http://yourserver/
or http://yourserver.yourdomain.com/
if you have multiple interfaces.)
However, the URL
property of an HTTPRequest
object returns a System.URI
object, which also contains server name.

- 26,085
- 12
- 82
- 103

- 32,681
- 5
- 61
- 85
-
16This explanation incorrectly implies that `Request.RawUrl` is just syntactic sugar for `Request.Url.LocalPath`. – Brian Oct 16 '12 at 13:11
-
3@Brian it might be helpful to explain how it's not just syntactic sugar. – Mal Ross Apr 04 '14 at 08:15
-
10@MalRoss: They can be different paths entirely during path rewriting (e.g., 404 handlers). See [British Developer's answer](http://stackoverflow.com/a/20381367/18192) – Brian Apr 04 '14 at 13:15
-
One issue I can't resolve is how to get the default url. For example, I'll get just a "/" for localhost:53188, but what I want is localhost:53188/Home/Index – JoshYates1980 Sep 11 '14 at 21:39
Request.RawUrl
is very similar to Request.Url.PathAndQuery
except that Request.Url.PathAndQuery
includes the Default Document if one was used whereas Request.RawUrl
does not. From my experience, this is true for ASP.Net 4.0 and higher.
The HttpRequest.RawUrl Property documentation describes the property value as:
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.
The HttpRequest.Url Property documentation describes the property value as:
A Uri object that contains the URL of the current request.
See the Uri class documentation for its properties.
Request.RawUrl returns a string, it's everything after the domain information for the current url.
Eg, for: Request.RawUrl vs. Request.Url
Request.RawUrl would be /questions/2019735/request-rawurl-vs-request-url
Request.Url returns a Uri object, http://msdn.microsoft.com/en-us/library/system.uri_members.aspx