1

Windows2003サーバー上のIISでASP.NETWebサービスを実行しています。

これは、別の.NETプログラムを使用して行った呼び出しのIISログです。「HelloWorld」でアプリケーションに正しく応答しました

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

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

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

My Global.asax Application_StartとApplication_Errorはどちらも、ヒットしたときにメッセージをログに記録するようにコーディングされています。

.NETとRPGの両方からの呼び出しは、Application_Start関数のログファイルに書き込みます...しかし、どちらもApplication_Error関数のログに書き込みません。

HelloWorldは、ロガーを初期化し、文字列「HelloWorld」を返すだけです。そして...ログは両方の呼び出しで書き込まれています。

では...発生しているエラーをトラップするにはどうすればよいですか?500コードを送り返しています。

4

1 に答える 1

1

残念ながら、Application_ErrorWebサービスの未処理の例外に対しては起動しません。

詳細については、この質問への回答を確認してください。各Webメソッドにtry-catchを追加するか、Webサービスの例外を処理するためのSOAP拡張機能を作成するなどの操作を行う必要があります。

おそらく、SOAP拡張ルートを使用して、すべてのプロジェクトで汎用Webサービス例外ハンドラーとして使用できる拡張機能を作成します。

更新この質問
に対する答えの1つに、SOAP拡張コードの例があります。

于 2013-03-26T04:15:12.980 に答える