我正在尝试连接到我们的Exchange 2007服务器。我已经放置了很多异常处理来捕获任何错误,并将它们放在应用程序日志中。首先,我有一个确保用户可以使用提供的凭证访问Exchange服务的功能:
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()
功能。
所以我有点困惑,可能对Exchange或Web服务之类的东西不太了解。登录函数返回true,但稍后授权失败。有什么建议吗?