我们对EWS邮件用户有零星的问题。在堆栈跟踪中,我们看到
System.ArgumentException: Requested value 'GroupMailbox' was not found.'
调查结果
这是StackTrace:
at System.Enum.TryParseEnum (System.Type enumType, System.String value, Boolean ignoreCase, System.EnumResult& parseResult) <0x10087d640 + 0x0052b>
in <filename unknown>:0
at System.Enum.Parse (System.Type enumType, System.String value, Boolean ignoreCase) <0x1006b91a8 + 0x00057>
in <filename unknown>:0
at Microsoft.Exchange.WebServices.Data.EwsUtilities.Parse[T] (System.String value) <0x10114e1ac + 0x000e3>
in <filename unknown>:0
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.ReadValue[T] () <0x10114e764 + 0x00053>
in <filename unknown>:0
at Microsoft.Exchange.WebServices.Data.EwsXmlReader.ReadElementValue[T] () <0x10114e078 + 0x00087>
in <filename unknown>:0
at Microsoft.Exchange.WebServices.Data.EmailAddress.TryReadElementFromXml (Microsoft.Exchange.WebServices.Data.EwsServiceXmlReader reader) <0x1010a4330 + 0x00187>
at Microsoft.Exchange.WebServices.Data.EmailAddress.TryReadElementFromXml (Microsoft.Exchange.WebServices.Data.EwsServiceXmlReader reader) <0x1010a4330 + 0x00187>
在源代码中我们使用这种方法 EmailAddress :: TryReadElementFromXml
case XmlElementNames.MailboxType:
this.mailboxType = reader.ReadElementValue<MailboxType>();
分析:
我们认为,对于某些邮件,正在尝试解析MailboxType枚举。但是,枚举MailboxType不包含值GroupMailbox,因此会抛出异常。
这是MailboxType枚举
的文档是否有可能在枚举上更新服务器逻辑没有保持最新???
此外:
我们还将其追溯到EWSUtilities.cs中的方法
internal static T Parse<T>(string value)
else子句是
else
{
return (T)Enum.Parse(typeof(T), value, false);
}
在找不到枚举时应该保留哪些?而不是做一个TryParse它做一个失败的Parse。
这显然也是一个错误???
答案 0 :(得分:1)
EWS托管API的源代码在GitHub上,我相信这已经使用新的枚举https://github.com/OfficeDev/ews-managed-api/blob/154dbc66ac018d861c73ce489839cd9f58a1b0cd/Enumerations/MailboxType.cs进行了更新。您应该编译并使用GitHub的最新源代码作为最新版本,并且在更改之前发布的NuGet版本。 (微软应该真的要更新NuGet包以避免问题)。