2016-04-13 3 views
2

Есть ли способ проверить учетные данные, предоставленные пользователем, используя управляемый API EWS без отправки электронной почты. Я использую метод AutodiscoverUrl для объекта [ExchangeService], но он занимает слишком много времени? Любое предложение было бы оценено.Проверка учетных данных с помощью EWS Managed API

 try 
     { 
      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); 
      service.Credentials = new WebCredentials("[email protected]", "password"); 
      service.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback);  

      Console.WriteLine("Credentials validated successfully"); 
      Console.ReadLine(); 

     } 

     catch(Exception e) 
     { 
      Console.WriteLine(e.Message); 
      Console.ReadLine(); 
     } 

ответ

4

Один из способов получить это до скорости, а не приятно, но он работает, заключается в том, чтобы установить URL-адрес службы самостоятельно. Сначала получите URL обмена услуг, запустив метод autodiscoverurl в режиме отладки:

enter image description here

Тогда вместо запуска метода autodiscoverurl на сервисе, добавить URL вы получили от метода autodiscoverurl:

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

Вместо вызова автообнаружения для проверки учетных данных пользователя, вы можете сделать запрос на учетной записи электронной почты (Check exchange credentials remotely and check user logged in)

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("[email protected]", "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)); 
+0

Привет Маркус, спасибо. хорошо, что я на самом деле пытаюсь сделать, это использовать AutodiscoverUrl для проверки правильности учетных данных пользователя, если не этот метод вызывает исключение, которое я могу узнать об этом. Если я не использую этот метод, я не могу проверить эти учетные данные. Я ищу способ сделать это, не используя AutodiscoverUrl, потому что он медленный. –

+0

Отредактировал мой ответ, чтобы он подтвердил учетные данные @ D.B –

+0

Спасибо Маркусу. Это была большая помощь. –

Смежные вопросы