2013-09-30 84 views
3

我試圖使用EWS訪問收件箱郵件。 Kerberos已配置。但是,當我在我的webpart中使用service.UseDefaultCredentials = true時,出現401錯誤(未授權)。什麼是解決這個問題的解決方案。Sharepoint 2013 EWS收件箱webpart錯誤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環境中,請不要忘記指定域名:

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

我想爲我的SharePoint站點中的每個用戶使用默認憑據。如果我更改我的控制檯應用程序的代碼,一切都會正常工作。我不明白我該如何解決這個問題。 Kerberos已配置,但它爲什麼不起作用? – Dmitry

0

service.UseDefaultCredentials = true;將在您使用模擬器登錄自己的機器時起作用,這不起作用。要解決這個問題,你需要獲得一個管理員用戶誰擁有超過所有郵件帳戶的讀權限,然後通過管理員用戶的顯式憑證,然後使用EWS的impersonate類和你的問題將得到解決

相關問題