我一直遵循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问题,但是都没有一个实际的答案。
答案 0 :(得分:0)
我遇到了同样的错误,我唯一能找到的线索就是这个线程。
我最终通过切换到Microsoft.Exchange.WebServices.NETStandard -v 1.1.3(来自-v 2.0.0-beta1)修复了该问题。