首页 > 解决方案 > 如何验证传递给 NetworkCredential 构造函数以用于 EWS 的凭据?

问题描述

有没有一种方法可以验证传递给System.Net.NetworkCredential类的凭据?我想确保对 Exchange Web 服务的调用是有效的,这样调用才能正常工作。

这是示例代码:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
 service.Credentials = new NetworkCredential(user_id, password);

//how to validate credentials here? 

service.Url = new System.Uri("some_url");
Microsoft.Exchange.WebServices.Data.Appointment meeting1 = new Microsoft.Exchange.WebServices.Data.Appointment(service);

 //add some extra stuff to the meeting object

  ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;

 Microsoft.Exchange.WebServices.Data.Mailbox test = new Microsoft.Exchange.WebServices.Data.Mailbox(email);

 Microsoft.Exchange.WebServices.Data.FolderId folderid = new Microsoft.Exchange.WebServices.Data.FolderId(WellKnownFolderName.Calendar, test);

 meeting1.Save(folderid,SendInvitationsMode.SendToAllAndSaveCopy);

另外,有没有办法检查是否.Save()真的有效?该函数没有返回值。

标签: c#exchangewebservicesnetworkcredentials

解决方案


有没有一种方法可以验证传递给 System.Net.NetworkCredential 类的凭据?

这些是 Active Directory 凭据,因此如果您想验证它们,您可以查看类似Validate a username and password against Active Directory?.EWS 不提供任何凭据验证方法,如果它们不正确则仅返回 401。

另外,有没有办法检查 .Save() 是否真的有效?该函数没有返回值

如果从服务器接收到无效响应,则会引发异常,因此在这种情况下,您应该至少在保存周围有一个 try/catch(异常可以是基于请求或响应的)。如果在您的示例中成功创建会议,则 meeting1 对象现在将在其 Id 属性中具有基础 Id。


推荐阅读