服务器返回500代码,但无法捕获错误

时间:2013-03-25 21:40:11

标签: asp.net .net xml web-services iis

我在Windows 2003服务器上运行IIS Web服务。

以下是我使用其他.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代码。

1 个答案:

答案 0 :(得分:1)

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

查看this question的答案以获取更多信息。您将不得不为每个Web方法添加try-catch或创建SOAP扩展来处理Web服务异常。

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

<强>更新
this question的答案之一有SOAP扩展代码示例。