XMLをWCFサービスに投稿するのに助けが必要です。本質的に、私が経験している問題は、「400:Bad request」のHTTP応答です。それは説明的ですが、答えを見つけるのに苦労しています。
まず、私がWCFに組み込んだサービスは、元々IBMWebSphereWebサービスからの既存のWSDLに基づいています。いくつかの操作(MIME添付ファイルの削除、いくつかのリモートスキーマのダウンロード)の後、私はsvcutilに、すべての目的と目的で有効と思われるサービスインターフェイスを生成させることができました。
WCFサービスにインターフェイスを実装しました。WCFテストクライアントを実行すると、サービスに接続して要求を送信し、問題なく応答を受け取ることができます。ここまでは順調ですね!
HttpWebRequestクラスを介してXMLをWebサービスに投稿するためのテストアプリケーションに移動すると、WCFテストクライアントによって提供されたXMLを使用しているにもかかわらず、「400:Badrequest」応答の受信を開始します。
私はWCFトレースを使用して、受信したメッセージをダンプしましたが、1つの顕著な違いがあります。すべてのWCFテストクライアントメッセージが正しく入力され、ヘッダー情報などが表示されます。SOAPテストユーティリティからのすべてのメッセージは次のように表示されます。 「奇形」。メッセージタブを見ると、私が送信している手動のPOSTメッセージでは、本文が要素でラップされています。
<MessageLogTraceRecord><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:57567/Service1.svc</To>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.nowhere.co.uk/RequestService/RequestOperation</Action>
</s:Header>
</s:Envelope>
]]></MessageLogTraceRecord>
WCFメッセージは次のように表示されます。
<MessageLogTraceRecord>
<HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
<Method>POST</Method>
<QueryString></QueryString>
<WebHeaders>
<Connection>Keep-Alive</Connection>
<Content-Length>185</Content-Length>
<Content-Type>text/xml; charset=utf-8</Content-Type>
<Accept-Encoding>gzip, deflate</Accept-Encoding>
<Expect>100-continue</Expect>
<Host>localhost:57567</Host>
<VsDebuggerCausalityData>uIDPo4VLDcJD5AZDjB5sdmoeakEAAAAAH/hWABuWQ0iiq47QDHh0GlelCLcEx7FLibxRvpq1tTgACQAA</VsDebuggerCausalityData>
<SOAPAction>"http://www.nowhere.co.uk/RequestService/RequestOperation"</SOAPAction>
</WebHeaders>
</HttpRequest>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:57567/Service1.svc</To>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.nowhere.co.uk/RequestService/RequestOperation</Action>
</s:Header>
</s:Envelope>
</MessageLogTraceRecord>
Fiddlerでトレースを試みましたが、役に立ちませんでした-app.configファイルを変更したにもかかわらず、WCFテストクライアントが作成したプロキシを介してリクエストを送信するようにできません。私はSOAPリクエストをトレースしましたが、次のことがわかります。
Content-Type: text/xml; charset="utf-8"
Accept-Encoding: gzip, deflate
Host: 127.0.0.1:57567
SOAPAction: "http://www.nowhere.co.uk/RequestService/RequestOperation"
Content-Length: 459
Expect: 100-continue
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:57567/Service1.svc</To>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.nowhere.co.uk/RequestService/RequestOperation</Action>
</s:Header>
</s:Envelope>
私が知る限り、私が送信しているメッセージは問題ないはずです-ヘッダーとメッセージの内容の外では、他に何を送信できるかわかりません。
最後に言わなければならないのは、私は決してWCFの専門家ではなく、商業的な機密性のために特定のSOAPAction値を変更する必要があったということです。
誰かがこのかなり苛立たしい問題について何か助けを提供できますか?
前もって感謝します