I thought HttpContext.Current is supposed to be null in a WCF service (even if aspNetCompatibilityEnabled is enabled).
MSDN: HttpContext: Current is always null when accessed from within a WCF service. from http://msdn.microsoft.com/en-us/library/aa702682.aspx
I have this in my web.config:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
But this :
HttpContext.Current + " has file path of " + HttpContext.Current.Request.FilePath
returns a valid context (and proof that I'm in a .svc file)
"System.Web.HttpContext has file path of /rrmvc/MVCServices/OrderPipelineService.svc"
I basically need a way to tell if I'm in SVC or ASMX. How should I do that?
No, when ASP.NET compatibility is enabled, that is the whole point - that the WCF service is executed in the context of the ASP.NET pipeline and you have full access to the ASP.NET services such as Cache, Session State, Forms Authentication, etc.
If you need to tell if the current request is to a WCF service or a ASMX service you could:
Note in all cases you won't have a HttpContext.Current when ASP.NET compatibility is not enabled in which case you can be certain you're not running in the scope of a ASMX web service.
Excerpt from the page you linked: Hosting WCF Services in ASP.NET Compatibility Mode
Unlike the default side-by-side configuration, where the WCF hosting infrastructure intercepts WCF messages and routes them out of the HTTP pipeline, WCF services running in ASP.NET Compatibility Mode participate fully in the ASP.NET HTTP request lifecycle. In compatibility mode, WCF services use the HTTP pipeline through an IHttpHandler implementation, similar to the way requests for ASPX pages and ASMX Web services are handled. As a result, WCF behaves identically to ASMX with respect to the following ASP.NET features:
HttpContext: WCF services running in ASP.NET Compatibility Mode can access Current and its associated state.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With