枚举MailboxType中是否缺少GroupMailBox?

时间:2016-09-28 16:39:35

标签: exchangewebservices ews-managed-api

我们对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枚举

的文档

https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.mailboxtype%28v=exchg.80%29.aspx?f=255&MSPPError=-2147217396

是否有可能在枚举上更新服务器逻辑没有保持最新???

此外:

我们还将其追溯到EWSUtilities.cs中的方法

    internal static T Parse<T>(string value)

else子句是

            else
            {
                return (T)Enum.Parse(typeof(T), value, false);
            }

在找不到枚举时应该保留哪些?而不是做一个TryParse它做一个失败的Parse。

这显然也是一个错误???

1 个答案:

答案 0 :(得分:1)

EWS托管API的源代码在GitHub上,我相信这已经使用新的枚举https://github.com/OfficeDev/ews-managed-api/blob/154dbc66ac018d861c73ce489839cd9f58a1b0cd/Enumerations/MailboxType.cs进行了更新。您应该编译并使用Gi​​tHub的最新源代码作为最新版本,并且在更改之前发布的NuGet版本。 (微软应该真的要更新NuGet包以避免问题)。