.NET4.5のクライアントアプリケーションからSharepoint2010検索Webサービスを呼び出そうとしています。問題なくサービス参照を追加し、適切な認証(NTLM)を許可するようにweb.configを変更しましたが、Queryメソッドを呼び出すとメッセージ付きの500サーバーエラー:
サーバーはリクエストを処理できませんでした。---> HRESULTからの例外:0x80131904 --->; HRESULTからの例外:0x80131904
私はいくつかのことを試しました、そして私が見つけたものは本当に私を困惑させます:
Fiddlerを使用してリクエストを分析する場合、失敗するリクエストは次のとおりです(本体部分のみ)。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Query xmlns="urn:Microsoft.Search">
<queryXml><QueryPacket xmlns='urn:Microsoft.Search.Query'><Query><SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats><Context><QueryText language='en-US' type='STRING'>ACCORDION</QueryText></Context></Query></QueryPacket>
</queryXml>
</Query>
</s:Body>
</s:Envelope>
Webサービスの説明を見ると(ブラウザーで_vti_bin / search.asmx?op = Queryを指定することにより)、現在表示されている名前空間はにある<s:Body
はずであることがわかりました<s:Envelope
。次に、Fiddlerでリクエストを編集して再送すると、サーバーが正しく応答しました。編集されたリクエストは次のとおりです。
<s:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body >
<Query xmlns="urn:Microsoft.Search"><queryXml><QueryPacket xmlns='urn:Microsoft.Search.Query'><Query><SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats><Context><QueryText language='en-US' type='STRING'>ACCORDION</QueryText></Context></Query></QueryPacket>
</queryXml>
</Query>
</s:Body>
</s:Envelope>
これは変じゃないですか?私は何かが足りないのですか?何か案は?
前もって感謝します