Служба поиска 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><QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000"> <Query> <Context> <QueryText language="fr-FR" type="STRING">foo bar</QueryText></Context> </Query> </QueryPacket> </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><ResponsePacket xmlns="urn:Microsoft.Search.Response"><Response domain=""><Status>ERROR_SERVER</Status><DebugErrorMessage>System.Data.SqlClient.SqlException</DebugErrorMessage></Response></ResponsePacket></QueryResult>
</QueryResponse></soap:Body></soap:Envelope>
3 ответа
Решение
После некоторого дальнейшего анализа я понял, что проблема заключается в том, что запрос Soap не начинается с объявления XML.
<?xml version="1.0">
Это вполне возможно и уважает стандарты, но SharePoint это не нравится.
Возникает вопрос: как заставить клиента WCF начинаться с объявления XML.
Есть проблема с вашим запросом. протестируйте свой поисковый сервис с помощью этого инструмента
В нем говорится, что было исключение SQL, не могли бы вы проверить на своей машине SQL, если какие-либо ошибки произошли?