我正在尝试编写一种方法来查找要与EWS连接的Exchange Server的Exchange Server版本。
很明显,读取对EWS请求的响应XML的内容包含此信息,如此处所述。
我很好奇我是否必须测试并处理错误,或者是否还有另一种“侵入性较小”的方法来查找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.");
}
}
我采取的策略是选择我“更喜欢”的EWS版本,然后首先要求它。由于更高版本的Exchange向后兼容其早期版本,因此可以要求E2013通过EWS与您在E2010 SP2“方言”中讲话。
EWS版本之间的最大鸿沟在于E2007 SP1和E2010 RTM之间,以及以后,特别是在时区管理方面。如果您可以避免完全支持E2007,则可以要求使用最低的公分母E2010 SP1,并与更高级别的人友好地交谈。如果您需要与E2007进行对话,则必须先尝试使用E2010 SP1,然后像上面一样处理异常。当然是YMMV,因为此处显示的E2010 + API之间存在一些差异,因此您可能更喜欢更高级别的产品。
自动发现完成后,您可以在另一端获取Exchange的实际版本并进行相应的调整,例如,如果您要求使用E2010 SP1但最终与E2013进行了交谈,则通知中存在一些需要解决的关联性问题由于E2010和E2013之间的体系结构更改而有所不同,但这可以在E2010 SP1方言中完成。
我还在我的代码中提供了一个配置值,以提供“提示”有关首先尝试使用哪个版本的假设,假设在特定商店中,Exchange服务器可能都位于同一级别。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句