I've got some RESTful services running in a pure WCF context (i.e. ASP.NET compatibility is not enabled, and thus there is no HttpContext.Current
object available).
The URLs to the services are rewritten at the start of the request using an IHttpModule
(which at that point does have an HttpContext
and rewrites it using HttpContext.Current.RewritePath
) to get rid of things like the .svc
extension from the URL.
However, I need to access the original URL that was requested from within the WCF infrastructure. Is there an equivalent to HttpContext.Current.Request.RawUrl
on the OperationContext
or WebOperationContext
classes anywhere? Using WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri
returns the rewritten URL not the original one.
You can get the endpoint currently targeted and the Uri for it by doing:
OperationContext.Current.RequestContext.RequestMessage.Headers.To
which I think is the same thing as:
OperationContext.Current.IncomingMessageHeaders.To
This is a System.Uri
object, and I believe you can just get the OriginalString
or PathAndQuery
, or whatever parts you want from it.