API веб-сервиса Exchange и 401 несанкционированное исключение
Когда я пытаюсь отправить электронную почту с помощью 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("[email protected]", "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("[email protected]");
message.Save();
message.Send();
}
catch (Exception ex)
{
throw ex;
}
Я читал другие сообщения на этом сайте по этой проблеме, но они не смогли решить мою проблему.
Ответы
Ответ 1
Попробуйте изменить это:
exchangeService.Credentials = new WebCredentials("[email protected]", "pwd", "domain");
в это:
exchangeService.Credentials = new WebCredentials("user", "pwd", "domain");
Когда-то учетные данные входа зависят от того, как он настроен для Exchange/Active Directory.
Это может быть user @domain или domain\user
Ответ 2
Мне потребовалось много времени, чтобы найти решение по той же проблеме.
В моем случае мне нужно было добавить в EWS Virtual Directory на сайте IIS список разрешенных URL-адресов.
Перейдите к управлению IIS, щелкните EWS node в разделе "Веб-сайт по умолчанию", затем дважды щелкните "Фильтрация запросов".
Перейдите на вкладку URL и справа, выберите Разрешить URL.
Введите URL-адрес, с помощью которого вы будете ссылаться на услугу, например. example.com/ews/или server.example.com/ews/
Кроме того, связанные с подобными проблемами, мне нужно было добавить все хосты (*) к доверенному хосту winrm (по умолчанию у него был только локальный IP-адрес).
НТН.