我正在尝试连接到我们的Exchange 2007服务器。我放置了很多异常处理来捕获任何错误,并将它们放入应用程序日志中。首先,我有一个确保用户可以使用提供的凭据访问交换服务的功能:


公共布尔Logon()
{
    字符串pwd = / *获取密码* /;

    尝试
    {
        service.Credentials =新的WebCredentials(
            用户名+“ @ our.domain”,pwd);

        service.FindItems(WellKnownFolderName.Outbox,new ItemView(1));
    }
    捕获(异常)
    {
        返回false;
    }
    返回true;
}



如果此函数返回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
                new SearchFilter [] {startTime,endTime});

        FindItemsResults结果=
            service.FindItems(
                WellKnownFolderName.Calendar,过滤器,新的ItemView(10));

        返回新的List(results.Items);
    }
    捕获(异常e)
    {
        Utilities.LogException(e);
        返回null;
    }
}



如您所见,该函数将捕获所有异常并将其记录下来。在日志中显示的是Request failed. The remote server returned an error: (401) Unauthorized.堆栈跟踪指向service.FindItems()函数。

因此,我有些困惑,可能对交换或Web服务或其他任何知识都不了解。登录函数返回true,但是随后授权失败。有什么建议么?

最佳答案

您的凭据有可能使您可以访问发件箱,但不能访问日历?

10-01 00:29