-->

兑换Web服务API和401未授权异常兑换Web服务API和401未授权异常(Exchange We

2019-05-12 00:15发布

当我尝试使用EWS API发送电子邮件,我得到以下错误:(在message.Send();

请求失败。 远程服务器返回错误:(401)未经授权。

我的代码如下:

ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

//WebService Uri
try
{
    exchangeService.Url = new Uri("https://exchangeserver/ews/exchange.asmx");
}
catch (Exception ex)
{
    throw new Exception(string.Format("WebService Uri:" + ex));
}

//Credentials
try
{
    exchangeService.Credentials = new WebCredentials("user@domain", "pwd", "domain");
}
catch (Exception ex)
{
    throw new Exception(string.Format("Credentials:" +  ex));
}

//Send a mail
try
{
    EmailMessage message = new EmailMessage(exchangeService);
    message.Subject = "Test";
    message.Body = "Test";
    message.ToRecipients.Add("destination@domain");
    message.Save();
    message.Send();
}
catch (Exception ex)
{
    throw ex;
}

我读了关于这个问题的这个网站的其他职位,但他们解决不了我的问题。

Answer 1:

尝试改变这一点:

 exchangeService.Credentials = new WebCredentials("user@domain", "pwd", "domain");

这个:

 exchangeService.Credentials = new WebCredentials("user", "pwd", "domain");

有时登录凭据取决于它是如何交换/ Active Directory中配置。 这可能是用户@域或域\用户



Answer 2:

我花了很多时间来寻找同一个问题的解决方案。 就我而言,我需要添加到EWS虚拟目录的IIS网站所允许的URL列表。 转至IIS管理,单击EWS节点,默认Web站点下,然后双击请求筛选。 转至该网址选项卡,然后在右边,单击允许URL。 输入网址的通过,你会调用服务,如example.com/ews/或server.example.com/ews/

此外,涉及到类似的问题,我需要的所有主机(*)添加到WinRM信任主机(默认情况下它只有本地IP列出)。

HTH。



Answer 3:

此问题会导致认证双向由Microsoft Office 365提供更好的创建应用程序的密码,并通过Outlook密码的那个吧。

exchangeService.Credentials = new WebCredentials("email", "app-pwd");


文章来源: Exchange Web Service API and 401 unauthorized exception