EWS Managed API版本行为差异:扩展属性在OutlookSpy显示异常求助
EWS Managed API .NET Framework与.NET Standard版本扩展属性兼容性问题
版本差异确认
是的,两个版本的EWS Managed API在自定义扩展属性的存储逻辑上存在差异:
- 基于.NET Framework的旧版API(1.2)默认将自定义命名空间的扩展属性存储在MAPI兼容的属性区域,因此OutlookSpy等MAPI客户端可以正常识别并显示。
- .NET Standard版API(1.1.3)默认使用EWS专属的属性存储方式,这类属性仅能被EWS自身查询读取,MAPI客户端无法识别,导致OutlookSpy看不到。
新应用修改方案
要让新应用创建的扩展属性被OutlookSpy识别,需显式指定扩展属性的属性集类型为MAPI,有两种修改方式:
方式一:使用MAPI公共字符串属性集
如果不需要保留自定义Guid命名空间,直接使用默认的公共属性集:
var epd = new ExtendedPropertyDefinition( DefaultExtendedPropertySet.PublicStrings, "SFRECID", MapiPropertyType.String ); NewEWSAppointment.SetExtendedProperty(epd, Item.GetItemByName(epd.Name).Value);
方式二:保留自定义Guid并指定MAPI属性集
如果必须保留原有的自定义Guid命名空间,需在创建ExtendedPropertyDefinition时明确指定属性集类型为Mapi:
var epd = new ExtendedPropertyDefinition( EWS_EXTENDED_PROPERTIES_GUID, "SFRECID", MapiPropertyType.String, PropertySetIdType.Mapi // 关键配置:指定为MAPI属性集 ); NewEWSAppointment.SetExtendedProperty(epd, Item.GetItemByName(epd.Name).Value);
原理说明
当指定PropertySetIdType.Mapi时,EWS会将扩展属性写入MAPI客户端可访问的存储区域,这样OutlookSpy等工具就能读取并显示这些属性;而默认的PropertySetIdType.Ews仅针对EWS接口开放,MAPI生态的工具无法识别。
内容的提问来源于stack exchange,提问作者Hudgi
相关产品推荐
相关产品推荐

