我在其中一个处理Authentication_Request的模块中设置了自定义主体。然后我将它设置为HttpContext.User。这设置了我的HttpContext.User和Thread.CurrentPrincipal。现在当发生错误并且customErrors部分包含“ResponseRewrite”时,Thread.CurrentPrincipal将重置为我的ASPX错误页面上的通用主体。但是我的HttpContext.User仍然包含我的自定义主体。如果customErrors部分包含“ResponseRedirect”,则不会发生这种情况。这是预期的行为吗?
答案 0 :(得分:0)
我怀疑服务器正在启动一个单独的线程来执行错误页面。您可以通过将以下内容放入Global.asax来重置它(Thread.CurrentPrincipal)。
protected void Application_AuthenticateRequest(object sender, EventArgs e) {
Thread.CurrentPrincipal = HttpContext.Current.User;
}
此行将确保两个请求同步到您的应用程序。