1

我有一个在 IIS 中运行的 ASP.NET Web 服务,在 Windows 2003 服务器上。

这是我使用另一个 .NET 程序完成的调用的 IIS 日志。它用“Hello World”正确响应了我的应用程序

2013-03-25 19:38:36 W3SVC1406312275 VMC-MMS 192.168.1.223 POST /test.asmx wsdl/mex 80 - 172.16.129.193 HTTP/1.1 - - - webservices.vm.vmc 500 0 0 775 677 1671
2013-03-25 19:38:36 W3SVC1406312275 VMC-MMS 192.168.1.223 GET /test.asmx wsdl 80 - 172.16.129.193 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+Protocol+2.0.50727.5466) - - webservices.vm.vmc 200 0 0 3103 183 2531
2013-03-25 19:38:36 W3SVC1406312275 VMC-MMS 192.168.1.223 POST /test.asmx wsdl 80 - 172.16.129.193 HTTP/1.1 - - - webservices.vm.vmc 500 0 0 775 645 250

这是从 RPG 程序完成的调用的 IIS 日志...发送回“500”“内部服务器错误”

2013-03-25 21:10:26 W3SVC1406312275 VMC-MMS 192.168.1.223 POST /test.asmx - 80 - 192.168.1.6 HTTP/1.1 http-api/1.24 - - webservices.vm.vmc 500 0 0 697 32968 2421

------------------

------------------

我的 Global.asax Application_Start 和 Application_Error 都被编码为在命中时记录一条消息。

来自 .NET 和 RPG 的调用都写入 Application_Start 函数中的日志文件......但都不会写入 Application_Error 函数中的日志。

HelloWorld 只初始化一个记录器并返回字符串“Hello World”。而且...日志正在两个调用中写入。

那么......我如何捕获正在发生的任何错误?这是发回 500 代码。

4

1 回答 1

1

不幸的是,Application_Error不会因为 Web 服务中未处理的异常而触发。

查看此问题的答案以获取更多信息。您将不得不做一些事情,比如向每个 Web 方法添加一个 try-catch,或者创建一个 SOAP 扩展来处理 Web 服务异常。

我可能会走 SOAP 扩展路线并创建一个可以在我的所有项目中用作通用 Web 服务异常处理程序的扩展。

更新这个问题
的答案之一有一个 SOAP 扩展代码示例。

于 2013-03-26T04:15:12.980 回答