Я пытаюсь подключиться к нашему серверу Exchange 2007. Я поместил много обработки исключений, чтобы отловить любые ошибки и поместить их в журнал приложения. Во-первых, у меня есть функция, которая обеспечивает пользователю доступ к сервису обмена с предоставленными учетными данными:
public bool Logon()
{
string pwd = /*Get password*/;
try
{
service.Credentials = new WebCredentials(
username + "@our.domain", pwd);
service.FindItems(WellKnownFolderName.Outbox, new ItemView(1));
}
catch (Exception)
{
return false;
}
return true;
}
Если эта функция возвращает false, в журнал приложения помещается запись о том, что пользователю не удалось войти в систему, затем процесс завершается.
Если функция завершается успешно, то где-то вниз по дорожке мы вызываем эту функцию; он получает все встречи для пользователя, которые начинаются в следующие 10 минут:
protected List GetFutureAppointments()
{
try
{
SearchFilter.IsGreaterThanOrEqualTo startTime =
new SearchFilter.IsGreaterThanOrEqualTo(
AppointmentSchema.Start, DateTime.Now);
SearchFilter.IsLessThanOrEqualTo endTime =
new SearchFilter.IsLessThanOrEqualTo(
AppointmentSchema.Start, DateTime.Now.AddMinutes(10));
SearchFilter filter =
new SearchFilter.SearchFilterCollection(LogicalOperator.And,
new SearchFilter[] { startTime, endTime });
FindItemsResults results =
service.FindItems(
WellKnownFolderName.Calendar, filter, new ItemView(10));
return new List(results.Items);
}
catch (Exception e)
{
Utilities.LogException(e);
return null;
}
}
Как видите, функция будет перехватывать все исключения и регистрировать их. В журнале отображается Request failed. The remote server returned an error: (401) Unauthorized.
Трассировка стека указывает на функцию service.FindItems()
.
Так что я немного сбит с толку и, возможно, недостаточно разбираюсь в обмене, веб-сервисах или чем-то еще. Функция входа возвращает true, но затем авторизация завершается неудачно. Есть предложения?