ASP .NET: Thread.CurrentPrincipal теряется, когда customErrors содержит redirectMode = "ResponseRewrite" - PullRequest
1 голос
/ 22 сентября 2010

Я устанавливаю свой пользовательский принципал в одном из модулей, который обрабатывает запрос Authentication_Request.Затем я установил его HttpContext.User.Это устанавливает мой HttpContext.User и Thread.CurrentPrincipal.Теперь, когда возникает ошибка, и раздел customErrors содержит «ResponseRewrite», Thread.CurrentPrincipal сбрасывается в общий принципал на моей странице ошибок ASPX., Но мой HttpContext.User по-прежнему содержит мой настраиваемый принципал.Этого не происходит, если раздел customErrors содержит «ResponseRedirect».Это ожидаемое поведение?

1 Ответ

0 голосов
/ 02 мая 2012

Я подозреваю, что сервер раскручивает отдельный поток для выполнения страницы с ошибкой. Вы можете сбросить его (Thread.CurrentPrincipal), добавив в ваш Global.asax следующее:

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

Эта строка обеспечивает синхронизацию обоих при каждом запросе к вашему приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...