据我所知,WebDAV将随EWS2010一起消失,因此应用程序服务器将不再能够像以前那样连接,而且如果没有WebDAV,连接到EWS将变得越来越困难。理论上讲,在.Net中做这件事应该比其他任何事情都容易。。。正确的?!
)
得到
和
创建/更新
我最初得到了一些示例代码,这些代码实际上是有效的,但我很快意识到它已经过时了。使用的类型和类在
the current documentation
.
ExchangeService svc = new ExchangeService();
svc.Credentials = new WebCredentials(AuthEmailAddress, AuthEmailPassword);
svc.AutodiscoverUrl(AutoDiscoverEmailAddress);
值得一提的是,它使用了示例代码附带的程序集:
Microsoft.Exchange.WebServices.dll
(“喵”)。
在我意识到这不是当前实现连接的标准方法,而且它还起作用之前,我尝试在它的基础上添加一个方法来创建日历项,我
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
汇编(我从
services.wsdl
由Exchange服务器提供)。
我排除了议会,这只会让事情变得更糟。我从少数几个错误和警告变成了25个错误和2510个警告。各种类型和方法均未找到。这里显然有点不对劲。
the extra steps it takes in VS2008
我删除了(实际上,现在,只是排除)所有以前我一直在尝试的程序集;我为添加了一个服务引用
https://my.exchange-server.com/ews/services.wsdl
现在我只剩下一个错误和一个警告。
警告:
元素“transport”不能包含子元素“extendedProtectionPolicy”,因为父元素的内容模型为空。
这是指在添加服务引用时对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程序集完美地结合在一起,但是
Exchange服务
ExchangeServiceBinding
,这是我检查的第一件事。)
在这一点上,由于我没有遵循文档中的任何指示(我在文档中找不到任何地方说要向Exchange服务器的services.wsdl添加服务引用——但这似乎是迄今为止我得到的最好的/最远的),我觉得我在瞎飞。
我知道我需要弄清楚该换什么
Exchange服务
/
ExchangeServiceBinding
我应该替换什么
Exchange服务
/
具有有没有其他比MSDN更好的地方可以使用EWS文档?