c# - 使用 Exchange Web 服务 (EWS) API 查找 Exchange Server 版本的方法

标签 c# xml exchange-server exchangewebservices

我正在尝试编写一种方法来查找我通过 EWS 连接到的 Exchange Server 的 Exchange Server 版本。

很明显,读取 EWS 请求的响应 XML 的内容包含此信息,如 described here .

我很好奇我是否必须测试和错误处理,或者是否有另一种“侵入性较小”的方法来查找 Exchange 版本。

如何找到我尝试使用 EWS 访问的 Exchange 服务器的版本,以便我可以为 EWS 管理的 API 事件设置它?

我目前正在使用以下方法,但我无法想象这是最有效的方法?

foreach (ExchangeVersion exchver in Enum.GetValues(typeof(ExchangeVersion)))
{
    //Console.WriteLine(exchver.ToString());
    try
    {
        ExchangeService service = new ExchangeService(exchver);
        //Do stuff here
    }
    catch (Exception e)
    {
        Console.WriteLine("Server is not " + exchver +". Trying next ExchangeVersion.");
    }
}

最佳答案

我采取的策略是选择一个我“喜欢”的 EWS 版本,然后先询问该版本。由于更高版本的 Exchange 向后兼容其早期版本,因此可以要求 E2013 通过 EWS 使用 E2010 SP2“方言”与您交谈。

EWS 版本的最大区别在于 E2007 SP1 和 E2010 RTM 及更高版本之间,特别是在时区管理方面。如果你能避免完全支持E2007,你可以要求最低公分母E2010 SP1,并与更高级别和谈。如果您需要与 E2007 通话,那么您必须先尝试 E2010 SP1,然后像上面那样处理异常。当然是 YMMV,因为 E2010+ API 中存在一些差异,如图所示 here ,因此您可能更喜欢更高的级别。

自动发现完成后,您可以在另一端获取实际的 Exchange 版本并进行相应调整,例如如果您要求使用 E2010 SP1 但最终与 E2013 通话,则由于 E2010 和 E2013 之间的体系结构发生变化,因此需要以不同方式管理通知的一些亲和性问题,但这可以在 E2010 SP1 方言中完成。

我还在我的代码中提供了一个配置值,以给出关于首先尝试哪个版本的“提示”,假设在特定商店中,Exchange 服务器可能都处于同一级别。

关于c# - 使用 Exchange Web 服务 (EWS) API 查找 Exchange Server 版本的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154235/

相关文章:

c# - 从 php 页面获取响应

c# - 如何找到两种类型中最小的可分配类型(重复)?

xml - 如何使用Xpath(using XSLT)查询遍历回XML文件中的父节点?

xml - 使用 xslt 有条件地添加默认命名空间

c# - 在 C# 中阅读 MS Exchange 电子邮件

C# - 在 Windows 7 中为所有用户设置目录权限

c# - EF如何确定可为空的参数?

java - Android:有没有办法隐藏 fragment 中的MainActivity布局元素?

c# - 如何使用 EWS 托管 API 从文件夹和公共(public)文件夹的子文件夹中获取所有项目

email - 什么电子邮件服务器或在线电子邮件服务允许为收件箱创建无限的电子邮件别名(通过 API)