EWS托管API:更新邮件时出现异常 [英] EWS Managed API: Exception when updating message
问题描述
我想使用以下代码将某些电子邮件的messageClass从IPM.Note更改为IPM.Note.MyForm:
EmailMessage message = EmailMessage.Bind(service,item.Id);
message.ItemClass =" IPM.Note.MyForm" ;;
message.Update(ConflictResolutionMode.AlwaysOverwrite);
当执行此代码我得到了解雇:
Microsoft.Exchange.WebServices.Data.ServiceXmlDeserializationException:预期的XML节点类型是Element,但实际类型是EndElement。在Microsoft。 Exchange.WebServices.Data.EwsXmlReader.Read(XmlNodeType nodeType)
在Microsoft.Exchange.WebServices.Data.EwsXmlReader.InternalReadElement(XmlNa
mespace xmlNamespace,String localName,XmlNodeType nodeType)
在Microsoft .Exchange.WebServices.Data.UpdateItemResponse.ReadElementsFromXml
(EwsServiceXmlReader reader)
在Microsoft.Exchange.WebServices.Data.ServiceResponse.LoadFromXml(EwsService
XmlReader re ader,String xmlElementName)
在Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.ParseRes
ponse(EwsServiceXmlReader reader)
在Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(EwsSer)
viceXmlReader ewsXmlReader)
在Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(HttpWe
bResponse response)
在Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute()
在Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
在Microsoft.Exchange.WebServices.Data.ExchangeService.InternalUpdateItems(IE
可数项`1项,FolderId savedItemsDestinationFolderId, ConflictResolutionMode conflictResolution,
Nullable`1 messageDisposition,Nullable`1 sendInvitationsOrCancellationsMode,ServiceErrorHandling errorHandling)
在Microsoft.Exchange.WebServices.Data.ExchangeService.UpdateItem(Item item,
FolderId savedItemsDestinati onFolderId,ConflictResolutionMode conflictResolutio
n,Nullable`1 messageDisposition,Nullable`1 sendInvitationsOrCancellationsMode)
在Microsoft.Exchange.WebServices.Data.Item.InternalUpdate(FolderId parentFol
derId,ConflictResolutionMode conflictResolutionMode,Nullable`1 messageDisposit
ion,Nullable`1 sendInvitationsOrCancellationsMode)
在Microsoft.Exchange.WebServices.Data.Item.Update(ConflictResolutionMode con_flictResolutionMode)
在ExAccess.Access .run()在E:\ project] \\ O2007 \ExAccess\ExAccess\src \ Access.cs中:第109行
但是,更改完成:我检查了消息的itemClass,我看到了新的消息。
有任何想法吗?
星期六·Mike·
Hi,
I want to change the messageClass of certain e-mails from IPM.Note to IPM.Note.MyForm with the following code:
EmailMessage message = EmailMessage.Bind(service, item.Id);
message.ItemClass = "IPM.Note.MyForm";
message.Update(ConflictResolutionMode.AlwaysOverwrite);
When executing this code I get the excpetion:
Microsoft.Exchange.WebServices.Data.ServiceXmlDeserializationException: Expected
XML node type was Element, but actual type is EndElement.
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.Read(XmlNodeType nodeType)
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.InternalReadElement(XmlNa
mespace xmlNamespace, String localName, XmlNodeType nodeType)
at Microsoft.Exchange.WebServices.Data.UpdateItemResponse.ReadElementsFromXml
(EwsServiceXmlReader reader)
at Microsoft.Exchange.WebServices.Data.ServiceResponse.LoadFromXml(EwsService
XmlReader reader, String xmlElementName)
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.ParseRes
ponse(EwsServiceXmlReader reader)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(EwsSer
viceXmlReader ewsXmlReader)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(HttpWe
bResponse response)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.InternalExecute()
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalUpdateItems(IE
numerable`1 items, FolderId savedItemsDestinationFolderId, ConflictResolutionMode conflictResolution,
Nullable`1 messageDisposition, Nullable`1 sendInvitationsOrCancellationsMode, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.ExchangeService.UpdateItem(Item item,
FolderId savedItemsDestinationFolderId, ConflictResolutionMode conflictResolutio
n, Nullable`1 messageDisposition, Nullable`1 sendInvitationsOrCancellationsMode)
at Microsoft.Exchange.WebServices.Data.Item.InternalUpdate(FolderId parentFol
derId, ConflictResolutionMode conflictResolutionMode, Nullable`1 messageDisposit
ion, Nullable`1 sendInvitationsOrCancellationsMode)
at Microsoft.Exchange.WebServices.Data.Item.Update(ConflictResolutionMode con
flictResolutionMode)
at ExAccess.Access.run() in E:\projects\O2007\ExAccess\ExAccess\src\Access.cs
:line 109
Nevertheless, the change is done: When I check the itemClass of the message, I see the new one.
Any ideas ?
Thx
Mike
推荐答案
您是否可以在ExchangeService实例上启用EwsResponses跟踪并发布从Update调用返回的内容?我不相信你做错了什么 - 只是试图确定客户端API在阅读响应时遇到问题的原因。
你需要做的就是添加以下几行...
Could you enable tracing for EwsResponses on the ExchangeService instance and post what is coming back from the Update call? I don't believe you are doing anything wrong - just trying to determine why the client API is having trouble reading the response.
All you need to do to enable tracing is add the following lines...
service.TraceEnabled = true;
service.TraceFlags = EWS.TraceFlags.EwsResponse;
然后,响应将被追踪到控制台。
Then the response will be traced to the console. 这篇关于EWS托管API:更新邮件时出现异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!