How do I handle exceptions thrown by asmx services

2019-04-11 15:44发布

问题:

ASP.NET ASMX service occasionally throws exceptions. However, global.asax Application_Error method do not seem to catch them. The question is, how to configure global error handler to catch and log these exceptions?

回答1:

Basic problem (well it is not a problem) with ASMX web service is that any exception behind the service layer is thrown as SOAP exception to client. You need to catch SOAP exception and then look for inner exception there.

A better and clean approach is you implement SOAP handler in your application. Serialize the SOAP exception through this and on client end deserialize it. This way you will have complete control over exception flow, rather than .net framework.

HTH



回答2:

Is it the ASMX or the AJAX JavaScript which is throwing the exception?

If it's the Javascript, you'll need to write exception handling into your JS, and then push that back to the server to be tracked in your error datastore--possibly via another call to your webservice.

If it's the ASMX then it's probably getting caught by your Application_Error, BUT as ASMX returns XML or JSON it won't necessarily get displayed on your UI unless you're looking for it.



回答3:

Client-side I Would simply wrap your call to the service in a JavaScript. On the server-side the error should be logged in your server log as an. http 500 error