1

Authentication_Request を処理するモジュールの 1 つでカスタム プリンシパルをセットアップします。次に、HttpContext.User に設定します。これにより、HttpContext.User と Thread.CurrentPrincipal が設定されます。エラーが発生し、customErrors セクションに "ResponseRewrite" が含まれている場合、Thread.CurrentPrincipal は ASPX エラー ページで汎用プリンシパルにリセットされますが、HttpContext.User にはまだカスタム プリンシパルが含まれています。customErrors セクションに「ResponseRedirect」が含まれている場合、これは発生しません。これは予想される動作ですか?

4

1 に答える 1

0

サーバーがエラーページを実行するために別のスレッドをスピンアップしていると思われます。以下を Global.asax に入れることで、それ (Thread.CurrentPrincipal) をリセットできる場合があります。

  protected void Application_AuthenticateRequest(object sender, EventArgs e) {
        Thread.CurrentPrincipal = HttpContext.Current.User;
  }

この行により、アプリケーションへの各リクエストで両方が同期されることが保証されます。

于 2012-05-02T12:30:06.730 に答える