SOAPリクエストをIISでローカルにサービスに送信すると、すべてが正常に動作します。SOAP別のホストでIISで実行されているのと同じサービスに要求すると、すべてが正常に動作します。
しかし、別のプログラマがSOAPリクエストをサービスに送信すると、サービス内の1つのメソッドを返す以外は、通常、適切な応答が得られます。
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Server was unable to process request. ---> Object reference not set to an instance of an object.</faultstring>
<detail />
</soap:Fault>
彼がこのエラーを受け取っている理由を理解する必要があります。
彼のSOAP要求はSOAP要求とまったく同じですが、私の要求は機能しますが、彼は機能しません。
みんなの助けに感謝します。私は問題を解決しました。
Soapリクエストの「SoapAction」フィールドに間違ったURIがありました
HTTPスニファーの使用をお勧めします。 httpスニファーはSOAPプロパティを表示します。
"SOAPAction"プロパティは次のようになります。 http://tempuri.org/YourServiceMethodName
「オブジェクト参照」エラーは、エラーの発生場所が正確にわからない場合のトラブルシューティングが最も困難です。このエラーの最も明白な原因はオブジェクトが初期化されていないか、オブジェクトまたは値が含まれていると予想されるときに変数にnull値が設定されているためです。必ずnull値をテストしてください。
また、エラー処理のベストプラクティスに従っていることを確認してください。より高いレベルのエラーハンドラーに意図的にエラーをキャッチさせるつもりがない限り、できるだけ早いレベルでエラーをキャッチするようにしてください。このエラーが発生しているという事実は、エラー処理が十分でないことを意味します。
最後に、エラーハンドラーに何らかのロギングメカニズムを含めることを強くお勧めします。エラーをイベントログまたはデータベースに保存するか、メールで送信します。エラーがどこにあるのか正確にわかるように、何でもかまいません。 エラーをユーザーに表示しないでください 。
これにはいくつかのオプションがあります。 Asp.Net Health Monitoring Webサービスおよび標準のasp.netサイトで正常に動作します。 [〜#〜] elmah [〜#〜] もあります。または、これを行うための独自のコードを書くこともできます。
これらのガイドラインに従えば、エラーの発生状況を理解できなくなることはありません。適切にトラブルシューティングするために必要な情報が得られ、アプリはより堅固になります。