我正在尝试连接到我们的 Exchange 2007 服务器。我已经放置了很多异常处理来捕获任何错误并将它们放入应用程序日志中。首先,我有一个函数可以确保用户可以使用提供的凭据访问交换服务:
公共布尔登录() { string pwd = /*获取密码*/; 尝试 { service.Credentials = 新的 WebCredentials( 用户名+“@our.domain”,密码); service.FindItems(WellKnownFolderName.Outbox, new ItemView(1)); } 捕捉(例外) { 返回假; } 返回真; }
如果此函数返回 false,则在应用程序日志中放置一个条目,报告用户登录失败,然后该过程终止。
如果函数成功了,那么在某个地方我们调用这个函数;它获取在接下来的 10 分钟内开始的用户的所有约会:
受保护的列表 GetFutureAppointments() { 尝试 { SearchFilter.IsGreaterThanOrEqualTo startTime = 新的 SearchFilter.IsGreaterThanOrEqualTo( AppointmentSchema.Start,DateTime.Now); SearchFilter.IsLessThanOrEqualTo endTime = 新的 SearchFilter.IsLessThanOrEqualTo( AppointmentSchema.Start, DateTime.Now.AddMinutes(10)); SearchFilter 过滤器 = 新的 SearchFilter.SearchFilterCollection(LogicalOperator.And, 新的 SearchFilter[] { startTime, endTime }); FindItemsResults 结果 = 服务.FindItems( WellKnownFolderName.Calendar, filter, new ItemView(10)); 返回新列表(结果。项目); } 捕获(异常 e) { 实用程序.LogException(e); 返回空值; } }
如您所见,该函数将捕获所有异常并记录它们。显示在日志中的是Request failed. The remote server returned an error: (401) Unauthorized.
堆栈跟踪指向该service.FindItems()
函数。
所以我有点困惑,可能对交换或网络服务或其他什么了解不够。登录函数返回 true,但稍后授权失败。有什么建议么?