【问题标题】:How to avoid Exchange Named Property exhaustion?如何避免交换命名属性耗尽?
【发布时间】:2018-04-03 07:31:13
【问题描述】:

根据下面的 Microsoft 博客文章,我开始使用命名属性在使用 EWS 时使用键值对标记外发电子邮件。这种方法用于找回刚刚在服务器上发送的电子邮件,以便您可以获得后期处理所需的邮件标识符(如移动电子邮件)。

https://blogs.msdn.microsoft.com/exchangedev/2010/02/25/determining-the-id-of-a-sent-message-by-using-extended-properties-with-the-ews-managed-api/

文章没有说的是,您可以在数据库中创建的命名属性的数量存在硬性限制(属性名称和 guid 对)。

我使用属性来解决博客文章正在解决的确切问题。他们为什么不提到这样的限制?我觉得我错过了一些应该很明显的事情。

问题:

  1. 有没有办法使用这些属性,以免它们被耗尽?博文中没有描述的一些技术?

  2. 我可以使用其他方法来解决相同的问题吗?

【问题讨论】:

    标签: exchangewebservices


    【解决方案1】:

    避免命名属性耗尽的方法是不要每次都使用新属性。例如,对于您的应用程序,您只需要一个名称属性,因为您的区别点应该是属性值(例如,如果您稍后搜索这些属性无论如何都不会被索引,因此为每条消息拥有一个单独的属性不会给您任何更好的表现)。即使您需要不同的键值对,您仍然可以将其放入属性值中(例如,使用 Microsoft 为邮件应用程序所做的 JSON 字符串,这样您就可以拥有一个具有多个键值对的扩展属性,尽管搜索性能会因此受到影响,因为 SubString 查询很昂贵)。

    【讨论】:

    • 这是我设置属性的方式。我的财产始终具有相同的名称。为每封邮件重新生成值 (guid)。 Guid guid = Guid.NewGuid(); ExtendedPropertyDefinition propDef = new ExtendedPropertyDefinition(guid, “myId”, MapiPropertyType.String); message.SetExtendedProperty(propDef, “myValue”);这是在做你建议的事情吗?我的理解是每个帐户只能获得 32,767 个名称:值对,而不是 32,767 个唯一名称。
    • 不要每次都使用新的 NewGuid,因为你创建了一个新的属性。为您的应用程序定义您自己的 GUID 并每次都使用该 GUID。因此,示例中的 guid 和 myId 应该是静态变量,只需更改值即可。
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 2017-07-31
    • 2017-12-12
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2012-06-24
    • 2019-05-26
    相关资源
    最近更新 更多