gpt4 book ai didi

c# - EWS : Exchange Web Service. 多次调用 ResolveName - 性能命中(当然)

转载 作者:行者123 更新时间:2023-11-30 12:15:29 25 4
gpt4 key购买 nike

您好 Stackoverflow 社区,

我正在通过 EWS 从一个 Outlook 帐户加载所有 Exchange Outlook 联系人。不幸的是,当联系人的电子邮件地址位于我们自己的 Active Directory 中时,它会转换为不同的格式 (/o=...;ou=...;cn=...)。为了将其转换为常规电子邮件地址,我使用了 EWS 服务对象的 ResolveName 方法。

现在的问题是:我循环遍历 FindItems 结果的所有项目,以将返回的数据映射到我自己的 C# 类。在此循环内,我必须调用 ResolveName-Method,它总是会导致对 EWS 的调用。说到几个联系人,这需要一些时间。

我已经缓存了之前解析过的地址。但是,当然,第一次通话时性能会受到影响。问题很明显:有没有办法将这个名称解析减少到调用 ews?

提前致谢!

我在循环内的调用:

EmailAddress email;
if (contact.EmailAddresses.TryGetValue(EmailAddressKey.EmailAddress1, out email))
{
person.Email = GetResolvedEmailAddress(email.Address, svc);
}

GetResolvedName 方法(用于缓存):

    private static Dictionary<String, String> ResolvedEmailAddressCache = new Dictionary<String, String>();
private static String GetResolvedEmailAddress(string address, ExchangeService svc)
{
if (ResolvedEmailAddressCache.ContainsKey(address))
return ResolvedEmailAddressCache[address];

NameResolutionCollection nd = svc.ResolveName(address);
foreach (NameResolution nm in nd)
{
if (nm.Mailbox.RoutingType == "SMTP")
{
ResolvedEmailAddressCache.Add(address, nm.Mailbox.Address);
return nm.Mailbox.Address;
}
}

ResolvedEmailAddressCache.Add(address, address);
return address;
}

最佳答案

不幸的是,没有。我唯一能想到的就是使用 LDAP 解析邮件地址。这可能更快。

关于c# - EWS : Exchange Web Service. 多次调用 ResolveName - 性能命中(当然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7255169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com