我在一个处理Authentication_Request的模块中设置了我的自定义主体。然后我将其设置为HttpContext.User。这就设置了我的HttpContext.User和Thread.CurrentPrincipal。现在,当出现错误并且customErrors部分包含"ResponseRewrite“时,在我的ASPX错误页面上,Thread.CurrentPrincipal被重置为通用主体,但我的HttpContext.User仍然包含我的自定义主体。如果customErrors部分包含"ResponseRedirect“,则不会发生这种情况。这是预期的行为吗?
发布于 2012-05-02 20:30:07
我怀疑服务器正在启动一个单独的线程来执行错误页面。您可以通过将以下内容放入您的Global.asax中来重置它(Thread.CurrentPrincipal)。
protected void Application_AuthenticateRequest(object sender, EventArgs e) {
Thread.CurrentPrincipal = HttpContext.Current.User;
}这一行将确保两者在对应用程序的每个请求上都是同步的。
https://stackoverflow.com/questions/3772663
复制相似问题