我的任务是在.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();

    ...
}

我马上就遇到了ExchangeServiceExchangeServiceBinding(“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

通过提问者添加:
证明有用的其他链接:

  • Setting the service URL (manually or via Autodiscover)
  • Working with the EWS Managed API-常见任务
  • 的一些基本文档
  • Download for EWS Managed API installer-与上述相同下载;还包括用于Visual Studio的一些文档和智能感知数据。
  • 关于c# - Exchange Web Services 2010入门,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2471303/

    10-13 09:23