1

我在处理 Authentication_Request 的模块之一中设置了我的自定义主体。然后我将它设置为 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 回答