【问题标题】:Method to find Exchange Server version using Exchange Web Services (EWS) API使用 Exchange Web 服务 (EWS) API 查找 Exchange Server 版本的方法
【发布时间】:2013-12-07 21:16:46
【问题描述】:

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

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

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

我如何找到我尝试使用 EWS 访问的 Exchange Server 的版本,以便为 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.");
    }
}

【问题讨论】:

    标签: c# xml exchange-server exchangewebservices


    【解决方案1】:

    我采取的策略是选择我“喜欢”的 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 服务器可能都处于同一级别。

    【讨论】:

    • 谢谢保罗!我敢说,欢迎!这是很好的输入,我很欣赏指导,因为它看起来很棒。您能否更详细地了解在自动发现完成后如何实际执行测试?
    • 如果您在GetUserSettings 调用中请求UserSettingName.CasVersion,您将获得版本字符串。
    猜你喜欢
    • 2016-03-27
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多