我的任务是在.Net中编写SOAP Web服务,以将其作为EWS2010和以前使用WebDAV连接到Exchange的应用程序服务器之间的中间件。 (据我了解,WebDAV将不再与EWS2010一起使用,因此应用程序服务器将不再能够像以前那样进行连接,并且在没有WebDAV的情况下,连接到EWS的难度将成倍增加。应该比其他任何东西都容易...对吗?
我的最终目标是能够为指定的Exchange帐户获取和创建/更新电子邮件,日历项,联系人和待办事项列表项。 (删除目前尚无必要,但如果足够容易,我可以将其内置以供将来考虑)。
最初为我提供了一些示例代码,该代码实际上可以工作,但我很快意识到它已经过时了。所使用的类型和类在the current documentation中不显示。
例如,用于创建到Exchange服务器的连接的方法是:
ExchangeService svc = new ExchangeService();
svc.Credentials = new WebCredentials(AuthEmailAddress, AuthEmailPassword);
svc.AutodiscoverUrl(AutoDiscoverEmailAddress);
对于它的值(value),它使用的是示例代码随附的程序集:
Microsoft.Exchange.WebServices.dll
(“MEWS”)。在我意识到这不是完成连接的当前标准方法并起作用之前,我尝试在此基础上并添加一种创建日历项的方法,该方法我称为copied from here:
static void CreateAppointment(ExchangeServiceBinding esb)
{
// Create the appointment.
CalendarItemType appointment = new CalendarItemType();
...
}
我马上就遇到了
ExchangeService
和ExchangeServiceBinding
(“ESB”)之间的区别;因此我开始使用Google搜索,尝试弄清楚如何获取ESB定义,以便CreateAppointment
方法可以编译。我发现this blog post解释了如何从WSDL生成代理类。不幸的是,这导致了一些冲突,其中原始程序集中定义的类型
Microsoft.Exchange.WebServices.dll
(与示例代码一起提供)与我的新EWS.dll
程序集(由Exchange服务器提供的services.wsdl
生成的代码进行编译)中的Types重叠。 。我排除了MEWS程序集,这只会使情况变得更糟。我从少数错误和警告变为25错误和2,510警告。找不到各种类型和方法。显然,这里有些错误。
所以我回到了狩猎。我找到了有关添加服务引用和网络引用(即the extra steps it takes in VS2008)的说明,而且我认为自己回到了正确的轨道。
我删除了(实际上,到目前为止,只是排除了)我一直在尝试的所有以前的程序集;我为
https://my.exchange-server.com/ews/services.wsdl
添加了服务引用现在我只剩下1个错误和1个警告。
这是在添加服务引用时对web.config所做的更改的引用;我才发现a fix for that here on SO。我已按指示将该部分注释掉了,它的确使警告消失了,因此请大呼过瘾。
但是,错误并不是那么容易解决:
这是我用来创建EWS连接的函数的引用,每个Web方法都调用该函数:
private ExchangeService getService(String AutoDiscoverEmailAddress, String AuthEmailAddress, String AuthEmailPassword)
{
ExchangeService svc = new ExchangeService();
svc.Credentials = new WebCredentials(AuthEmailAddress, AuthEmailPassword);
svc.AutodiscoverUrl(AutoDiscoverEmailAddress);
return svc;
}
此功能与示例代码中的MEWS程序集完美配合,但是
ExchangeService
类型不再可用。 (也不是ExchangeServiceBinding
,这是我检查的第一件事。)在这一点上,由于我没有遵循文档中的任何说明(在文档中找不到任何地方说可以向您的Exchange服务器的services.wsdl添加服务引用,但这似乎是最好的/距离我到目前为止最远的距离),我感觉自己在瞎飞。
我知道我需要弄清楚应该替换
ExchangeService
/ExchangeServiceBinding
的是什么,实现它,然后解决由于该切换而出现的任何错误...但是我不知道该怎么做,或者在哪里寻找该怎么做。谷歌搜索“ExchangeService”和“ExchangeServiceBinding”似乎只会导致过时的博客文章和MSDN,到目前为止,这两个都没有被证明非常有用。
我应该用什么替换
ExchangeService
/ExchangeServiceBinding
?还有其他比ESDN更好的文档来说明使用EWS的情况吗? 最佳答案
我建议移至Managed EWS API。它比尝试将所有内容自己拼凑起来要容易得多。它同时支持Exchange 2007 SP1和Exchange2010。我认为您会发现它更易于使用,并且可能会消除您的问题。
版本1:
这是download from Microsoft。
这是MSDN docs。
对于版本2(感谢@ruffin!)
Download-MSDN Docs
通过提问者添加:
证明有用的其他链接:
关于c# - Exchange Web Services 2010入门,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2471303/