1

.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>&lt;QueryPacket xmlns='urn:Microsoft.Search.Query'&gt;&lt;Query&gt;&lt;SupportedFormats&gt;&lt;Format&gt;urn:Microsoft.Search.Response.Document.Document&lt;/Format&gt;&lt;/SupportedFormats&gt;&lt;Context&gt;&lt;QueryText language='en-US' type='STRING'&gt;ACCORDION&lt;/QueryText&gt;&lt;/Context&gt;&lt;/Query&gt;&lt;/QueryPacket&gt;
                </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>&lt;QueryPacket xmlns='urn:Microsoft.Search.Query'&gt;&lt;Query&gt;&lt;SupportedFormats&gt;&lt;Format&gt;urn:Microsoft.Search.Response.Document.Document&lt;/Format&gt;&lt;/SupportedFormats&gt;&lt;Context&gt;&lt;QueryText language='en-US' type='STRING'&gt;ACCORDION&lt;/QueryText&gt;&lt;/Context&gt;&lt;/Query&gt;&lt;/QueryPacket&gt;
        </queryXml>
         </Query>
       </s:Body>
 </s:Envelope>

これは変じゃないですか?私は何かが足りないのですか?何か案は?

前もって感謝します

4

1 に答える 1