Sharepoint 2013 EWS收件箱Web部件错误401未经授权。

3
我正在尝试使用EWS访问收件箱邮件。Kerberos已经配置好了。但是,当我在我的Web部件中使用service.UseDefaultCredentials = true时,我会收到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);
        }

    }  
2个回答

0

尝试使用具有权限的另一个登录名或凭据。如果您在AD环境中,请不要忘记指定域:

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

我想在我的SharePoint Webpart中为每个用户使用默认凭据。如果我更改控制台应用程序的代码,一切都将运行良好。我不明白如何解决这个问题。Kerberos已经配置,但为什么它不起作用? - Dmitry

0

当您使用模拟登录时,service.UseDefaultCredentials = true; 只有在您使用自己的计算机登录时才能正常工作。如果您想解决这个问题,您需要获取一个具有所有邮件帐户读取权限的管理员用户,并传递管理员用户的明确凭据,然后使用 EWS 的模拟类,您的问题将得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接