2

Exchange 2007 サーバーに接続しようとしています。エラーをキャッチしてアプリケーションログに記録するために、多くの例外処理を配置しました。まず、ユーザーが提供された資格情報を使用して交換サービスにアクセスできるようにする機能があります。

パブリック ブール ログオン()
{
    string 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 フィルタ =
            new SearchFilter.SearchFilterCollection(LogicalOperator.And,
                new SearchFilter[] { startTime, endTime });

        FindItemsResults 結果 =  
            service.FindItems(
                WellKnownFolderName.Calendar、フィルター、新しい ItemView(10));

        新しいリストを返します (results.Items);
    }
    キャッチ (例外 e)
    {
        Utilities.LogException(e);
        null を返します。
    }
}

ご覧のとおり、関数はすべての例外をキャッチしてログに記録します。ログに表示されるのは、関数Request failed. The remote server returned an error: (401) Unauthorized.へのスタック トレース ポイントservice.FindItems()です。

だから私は少し混乱していて、おそらく交換やウェブサービスなどについて十分に知りません. ログオン関数は true を返していますが、認証は後で失敗します。助言がありますか?

4

1 に答える 1

1

資格情報で送信トレイにはアクセスできるが、カレンダーにはアクセスできない可能性がありますか?

于 2010-06-21T01:40:21.750 に答える