We are working on a 3-tier application, and we've been allowed to use the latest and greatest (MVC2, IIS7.5, WCF, SQL2k8, etc). The application tier is exposed to the various web applications by WCF services. Since we control both the service and client side, we've decided to use net.tcp bindings for their performance advantage over HTTP.
We would like to use ELMAH for the error logging, both on the web apps and services. Here's my question. There's lots of information about using ELMAH with WCF, but it is all for HTTP bindings. Does anyone know if/how you can use ELMAH with WCF services exposing non-HTTP endpoints?
My guess is no, because ELMAH wants the HttpContext, which requires the AspNetCompatibilityEnabled flag to be true in the web.config. From MSDN:
IIS 7.0 and WAS allows WCF services to communicate over protocols other than HTTP. However, WCF services running in applications that have enabled ASP.NET compatibility mode are not permitted to expose non-HTTP endpoints. Such a configuration generates an activation exception when the service receives its first message.
If it is true that you cannot use ELMAH with WCF services having non-HTTP endpoints, then the follow-up question is: Can we use ELMAH in such a way that doesn't need HttpContext? Or more generally (so as not to commit the thin metal ruler error), is there ANY way to use ELMAH with WCF services having non-HTTP endpoints?
Note: I'm aware that we can download the Elmah source code and change it to add a shim or remove the HttpContext dependency, but I'm trying to avoid forking the code.
No. ELMAH is a HTTP module, and unless you are serving HTTP requests, ELMAH won't do anything
It is possible as below
Elmah.ErrorLog.GetDefault(null).Log(new Error(ex));
Reference: http://groups.google.com/group/elmah/browse_thread/thread/9ea4b51420fd5dfa
Earlier I tried this solution for WCF service in addition AspNetCompatibility Mode and it didn't worked on IIS hosted WCF service, but it was working on dev server hosted WCF service within Visual Studio. Hence I had to satisfy myself with the above solution.
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