2013-09-30 2 views
3

Я пытаюсь получить доступ к почтовым ящикам входящих сообщений, используя EWS. Kerberos настроен. Но когда я использую service.UseDefaultCredentials = true в моей веб-части, я получаю ошибку 401 (неавторизованный). Что такое решение для решения этой проблемы.Sharepoint 2013 EWS inbox webpart error 401 неавторизованный

private static bool ValidateCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors) { 
     return true; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     {    

      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 

      ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateCertificate); 

      service.UseDefaultCredentials = true; 

      service.Url = new Uri(EWSuri.uri); 


      SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, 
                     new SearchFilter.IsEqualTo(
                     EmailMessageSchema.IsRead, false), new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, DateTime.Now.AddDays(-14))); 

      FindItemsResults<Item> findResults = service.FindItems(
       WellKnownFolderName.Inbox, sf, 
       new ItemView(int.MaxValue)); 

      emailblock.InnerHtml = "<div data-itemscount=\"" + findResults.Items.Count + "\"></div>"; 

      foreach (Item item in findResults.Items) 
      { 
       EmailMessage mes = (EmailMessage)item; 

       emailblock.InnerHtml += "<div class=\"emailitem\"><p class=\"emailline clearfix\"><span class=\"emailfield\">From:</span>" + 
          "<span class=\"emailtext\">" + " " + mes.Sender.Name + "</span></p>" + 
          "<p class=\"emailline clearfix\"><span class=\"emailfield\">Subject:</span>" + 
          "<span class=\"emailtext\">" + " " + item.Subject + "</span></p>" + 
          "<p class=\"emailline clearfix\"><span class=\"emailfield\">Received:</span>" + 
          "<span class=\"emailtext\">" + " " + item.DateTimeSent + "</span></p></div>"; 

      } 
     } 

     catch (Microsoft.Exchange.WebServices.Autodiscover.AutodiscoverRemoteException ex) 
     { 
      Console.WriteLine("Exception thrown:{0}" ,ex.Message); 
     } 

    } 

ответ

0

Попробуйте ввести другой логин или учетные данные, имеющие разрешение. Не забудьте указать имя домена, если вы находитесь в AD Enviroment:

exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
exchangeService.Credentials = new NetworkCredential(ExchangeConfig.user, 
                  ExchangeConfig.password, 
                  ExchangeConfig.domain); 
exchangeService.AutodiscoverUrl(ExchangeConfig.usermail); 
+0

Я хочу используйте учетные данные по умолчанию для каждого пользователя в моей веб-части sharepoint. Если я изменю свой код для Console Application, все будет работать нормально. Я не понимаю, как я могу решить эту проблему. Kerberos настроен, но почему он не работает ??? – Dmitry

0

service.UseDefaultCredentials = истина; будет работать, когда вы войдете в систему со своей машиной при использовании олицетворения, это не сработает. Чтобы решить эту проблему, вам нужно получить администратора, у которого есть права на чтение по всем учетным записям электронной почты, а затем передать явные учетные данные администратора, а затем использовать выданный класс EWS, и проблема с ур будет решена.

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