交易所401未经授权

时间:2010-06-21 01:12:28

标签: c# .net web-services exchange-server ews-managed-api

我正在尝试连接到我们的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()函数。

所以我有点困惑,可能对交换或网络服务或其他什么都不太了解。登录功能返回true,但稍后授权失败。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您的凭据可能会授予您访问发件箱的权限,但不能访问日历?