2012-10-23 53 views
1

我試圖從客戶端應用程序在.NET 4.5 調用SharePoint 2010的搜索Web服務我,沒有任何問題增加了服務的參考,我修改web.config中允許適當身份驗證(NTLM),但是當我打電話查詢方法,我得到一個500服務器錯誤與消息:500調用2010的Sharepoint當內部服務器錯誤search.asmx

服務器無法處理請求。 --->來自HRESULT的異常:0x80131904 --->;從HRESULT異常:0x80131904

我已經試過幾件事情,什麼我發現真的很讓我爲難:

當使用招來分析的要求,這裏是失敗(只是主體部分)的要求:

<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 =查詢?),我意識到,現在出現在<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> 

這不是很奇怪嗎?我錯過了什麼嗎?有任何想法嗎?

在此先感謝

回答

0

環繞,而無需先對其進行編碼與CDATA,你應該有正確的行爲QueryPacket中的文本。

<![CDATA[your query]]>