EWS HttpHeader内容类型

时间:2019-03-01 15:58:04

标签: c# http-headers exchangewebservices

我一直遵循Microsoft的Get started with EWS Managed API client applications教程,以构建一个可从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对象发出的请求中应该不是问题,但是成员字典HttpHeaders是不可设置的(请参见ExchangeServiceBase中的界面)。

您知道如何通过EWS托管API向服务器发送可接受的请求,还是配置目标Exchange服务器以使其接受我发送的请求?我遇到了很多相关的SO问题,但是都没有一个实际的答案。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误,我唯一能找到的线索就是这个线程。

我最终通过切换到Microsoft.Exchange.WebServices.NETStandard -v 1.1.3(来自-v 2.0.0-beta1)修复了该问题。