Служба поиска SharePoint возвращает SERVER_ERROR (SQLException)

У меня есть простой клиент веб-службы WCF, который отправляет запрос на Microsoft Search Server (входит в состав SharePoint 2007) на /more/_vti_bin/search.asmx

Запрос отправлен

<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" Revision="1000"&gt; &lt;Query&gt; &lt;Context&gt; &lt;QueryText language="fr-FR" type="STRING"&gt;foo bar&lt;/QueryText&gt;&lt;/Context&gt; &lt;/Query&gt; &lt;/QueryPacket&gt; </queryXml>
</Query></s:Body></s:Envelope>

Но ответ показывает ошибку SQLException

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<QueryResponse xmlns="urn:Microsoft.Search">
<QueryResult>&lt;ResponsePacket xmlns="urn:Microsoft.Search.Response"&gt;&lt;Response domain=""&gt;&lt;Status&gt;ERROR_SERVER&lt;/Status&gt;&lt;DebugErrorMessage&gt;System.Data.SqlClient.SqlException&lt;/DebugErrorMessage&gt;&lt;/Response&gt;&lt;/ResponsePacket&gt;</QueryResult>
</QueryResponse></soap:Body></soap:Envelope>

3 ответа

Решение

После некоторого дальнейшего анализа я понял, что проблема заключается в том, что запрос Soap не начинается с объявления XML.

<?xml version="1.0">

Это вполне возможно и уважает стандарты, но SharePoint это не нравится.

Возникает вопрос: как заставить клиента WCF начинаться с объявления XML.

Есть проблема с вашим запросом. протестируйте свой поисковый сервис с помощью этого инструмента

В нем говорится, что было исключение SQL, не могли бы вы проверить на своей машине SQL, если какие-либо ошибки произошли?

Другие вопросы по тегам