以及如何解决它.为了维护目的,我想记录每个抛出的异常.
我想捕获ASP.NET Web服务中抛出的任何未处理的异常,但到目前为止我没有尝试过任何东西.
首先,HttpApplication.Error事件不会在Web服务上触发,所以这就是..
下一个方法是实现soap扩展,并将其添加到web.config中:
<soapExtensionTypes>
<add type="Foo" priority="1" group="0" />
</soapExtensionTypes>
Run Code Online (Sandbox Code Playgroud)
但是,如果您通过JSON(我的网站专门执行)调用Web方法,则此方法无效.
我的下一个想法是为.asmx编写我自己的HttpHandler,它希望从System.Web.Script.Services.ScriptHandlerFactory派生出来并做一些聪明的事情.我还没试过这个.
有没有我错过的方法?谢谢!
麦克风
更新:
我将在这里总结一下可能的解决方案:
1)升级到WCF,这使得整个事情变得更加容易.
2)由于你不能子类或覆盖RestHandler类,你必须重新实现整个事物作为你自己的IHttpHandler或使用反射手动调用它的方法.由于RestHandler的源代码是公共的,只有大约500行,因此制作您自己的版本可能不是很大的工作量,但您需要负责维护它.我也没有意识到此代码涉及的任何许可限制.
3)您可以将方法包装在try/catch块中,或者使用LAMBDA表达式使此代码更清晰.它仍然需要您修改Web服务中的每个方法.