C# ServiceResponseException:在存储中找不到指定的对象

C# ServiceResponseException:在存储中找不到指定的对象,c#,soap,exchangewebservices,exchange-server-2010,C#,Soap,Exchangewebservices,Exchange Server 2010,我正在尝试升级一个应用程序,该应用程序针对Exchange 2003使用WebDAV返回responseXML,然后在SalesForce CRM上创建案例(使用web服务wsdl),并将电子邮件中的附件放在案例上 我们正在迁移到Exchange 2010 SP2,因此我需要使用EWS访问收件箱 我收到一个ServiceResponseException错误“在存储中找不到指定的对象” 这是我的密码: ExchangeService service = new ExchangeService(E

我正在尝试升级一个应用程序,该应用程序针对Exchange 2003使用WebDAV返回responseXML,然后在SalesForce CRM上创建案例(使用web服务wsdl),并将电子邮件中的附件放在案例上

我们正在迁移到Exchange 2010 SP2,因此我需要使用EWS访问收件箱

我收到一个ServiceResponseException错误“在存储中找不到指定的对象”

这是我的密码:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);// .Exchange2007_SP1);

List<SearchFilter> searchFilterCollection = new List<SearchFilter>();

searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false)));
searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.HasAttachments,true)));
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());

//creates an object that will represent the desired mailbox
Mailbox mb = new Mailbox(@"bbtest@domain");

ItemView view = new ItemView(1);

//creates a folder object that will point to inbox folder
FolderId fid = new FolderId(WellKnownFolderName.Inbox, mb);

service.Url = new Uri("https://domain/EWS/Exchange.asmx");

//this will bind the mailbox you're looking for using your service instance
Microsoft.Exchange.WebServices.Data.Folder inbox = Microsoft.Exchange.WebServices.Data.Folder.Bind(service, fid);

FindItemsResults<Item> results = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view);

foreach (EmailMessage email in results)
{
    Debug.Print(email.From.ToString());
    Debug.Print(email.DisplayTo);
    Debug.Print(email.Subject);
    }
我做错了什么?我该如何解决这个问题


另外,是否没有办法让EWS返回与webDAV类似的XML responseStream?

根据我的经验,当您无权访问Exchange存储中的对象时,可以返回NotFound。确保您使用的任何凭据都具有对目标MB的完全邮箱访问权限。(我想如果您只想读取项目,您可能需要更少的权限,但如果需要,您可以稍后进行修剪。)我看不到您在上面设置了任何凭据,因此您可能是使用默认凭据访问EWS,即运行此操作时的登录身份


不,您无法从EWS获得WebDAV响应流:它们是完全不同的服务,而且我相信您知道,WebDAV在2007年之后不存在。

@primary+1感谢这一点,我希望我能使我的EWS响应流xml看起来像是从EWS返回的(可能通过转换它?)然后,我可以避免大量的重新编码工作:)我将查看我的凭据,我认为我可以是目标邮箱上的代理以便能够读取它,看起来我需要设置网络凭据……或者,您可以查看模拟,这似乎是现在更受欢迎的方式。因此,Exchange管理员不允许用户MYDOM\Phil完全访问Room1,而是允许MYDOM\Phil模拟Room1。这需要在
ExchangeService
对象上设置
ImpersonatedUserId
属性。@pjneary我也有同样的问题。您知道如何将EWS管理员用户权限设置为我要访问的邮箱吗?在Exchange管理员UI中有一种方法可以做到这一点:管理对邮箱的完全访问权限。我认为有一种Powershell方法可以做到这一点,但我不记得使用过它。
Microsoft.Exchange.WebServices.Data.Folder inbox = Microsoft.Exchange.WebServices.Data.Folder.Bind(service, fid);