使用EWS托管APIvalidation登录凭据

有没有办法validation用户使用EWS托管API提供的登录凭据而不发送电子邮件。 我在[ExchangeService]对象上使用AutodiscoverUrl方法,但它需要太长时间? 任何建议都会很感激。

try { ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); service.Credentials = new WebCredentials("xxxx@yyy.com", "password"); service.AutodiscoverUrl("xxxx@yyy.com", RedirectionUrlValidationCallback); Console.WriteLine("Credentials validated successfully"); Console.ReadLine(); } catch(Exception e) { Console.WriteLine(e.Message); Console.ReadLine(); } 

提高速度的一种方法,不是很好但是很有效,就是自己设置服务URL。 首先通过在调试模式下运行autodiscoverurl方法来获取交换服务URL:

在此处输入图像描述

然后,不是在服务上运行autodiscoverurl方法,而是添加从autodiscoverurl方法获得的url:

  service.Url = new Uri("https://yourExchangeURL.com/EWS/Exchange.asmx"); 

您可以在邮件帐户上发出请求( 远程检查交换凭据并检查用户是否已登录 ),而不是调用自动发现来validation用户凭据

 var findFolderResults = service.FindFolders(WellKnownFolderName.Root, new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0), new FolderView(10)); 

您的最终代码将如下所示

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); service.Credentials = new WebCredentials("xxxx@yyy.com", "password"); service.Url = new Uri("https://yourExchangeURL.com/EWS/Exchange.asmx"); var findFolderResults = service.FindFolders(WellKnownFolderName.Root, new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0), new FolderView(10));