Я следовал инструкциям Microsoft Начать работу с клиентскими приложениями EWS Managed API , чтобы создать приложение, которое будет получать определенные элементы из почтового ящика на сервере Exchange.
Похоже, что после успешного выполнения начальных операций автоматического обнаружения, независимо от того, какой запрос я отправляю через API, я получаю ответ, содержащий следующее:
HTTP/1.1 415 Cannot process the message because the content type 'text/plain; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.
С Microsoft.Exchange.WebServices.Data.ExchangeService.TraceEnabled = true
, следтипичный запрос выглядит следующим образом (этот генерируется путем вызова Folder.Bind(service, "IT", propSet)
):
<?xml version="1.0" encoding="utf-16"?>
<Trace Tag="EwsRequest" Tid="1" Time="2019-03-01 14:42:02Z" Version="15.0.913.15">
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2013" />
</soap:Header>
<soap:Body>
<m:GetFolder>
<m:FolderShape>
<t:BaseShape>IdOnly</t:BaseShape>
</m:FolderShape>
<m:FolderIds>
<t:FolderId Id="IT" />
</m:FolderIds>
</m:GetFolder>
</soap:Body>
</soap:Envelope>
</Trace>
Похоже, что заголовок Content-Type вообще отсутствует, поэтому сервер видит запрос как text/plain; charset=utf-8
.Не должно быть проблемой добавлять Content-Type: text/xml; charset=utf-8
к запросам, которые делает объект ExchangeService
, но элемент Dictionary HttpHeaders
не может быть установлен (см. Интерфейс в ExchangeServiceBase ).
Есть идеи, как можно отправить серверу приемлемый запрос с помощью управляемого API EWS или настроить целевой сервер Exchange таким образом, чтобы он принимал запросы, которые я отправляю?Я сталкивался с большим количеством связанных с этим вопросов, но ни один из них не дал реального ответа на эту проблему.