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 を返していますが、認証は後で失敗します。助言がありますか?