障害処理に Unity/Unity.WCF/Unity.Interceptors を使用する WCF サービスを作成しました。
ここで、SOAP 要求を実行し、要求に必要なノードを含めない場合 (サービス メソッドが実行されます)、例外をスローし、インターセプターがこれを SOAP 障害にします。
例:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v10="http://services.....nl/.../Schemas/v10">
<soapenv:Header/>
<soapenv:Body>
<v10:TheRequestObject>
</v10:TheRequestObject>
</soapenv:Body>
</soapenv:Envelope>
デバッガーを使用してサービス呼び出しをステップ実行できます。要求オブジェクトを検証するときに例外をスローし、インターセプターがこれを SOAP エラーにします。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring xml:lang="nl-NL">Error msg</faultstring>
<detail> ...
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
今 - 私たちのテスターは、次のように必要なパラメーターに空のノードを提供しました:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v10="http://services.....nl/.../Schemas/v10">
<soapenv:Header/>
<soapenv:Body>
<v10:WagenlijstRequest>
<v10:RequiredInteger></v10:RequiredInteger>
</v10:WagenlijstRequest>
</soapenv:Body>
</soapenv:Envelope>
また、サービスは次のエラー メッセージを返します。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
<faultstring xml:lang="nl-NL">The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
問題は、このリクエストがサービスに到達しないため、このエラー メッセージに対して何もできないことです。ここで起こることにどう影響を与えることができますか?
これは、MVC でのモデルバインディングを少し思い出させます。バインディングの動作などに影響を与えることはできますか?