IsPostBack возвращает False после вызова HttpContextWrapper в Global.asax - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю с устаревшим интранет-сайтом.Сайт использует веб-формы, но с тех пор начал использовать MVC, поэтому это гибридное приложение.Он все еще использует FormsAuthentication для аутентификации.Проблема, которая преследует сайт в течение некоторого времени, заключается в том, что приходит запрос ajax, и пользователь больше не проходит проверку подлинности (время ожидания сеанса, выход из системы и т. Д.), Когда запрос перенаправляется на страницу входа вместо возврата 401.

В файле Global.asax II используйте этот код

Dim contextWrapper = New HttpContextWrapper(Context)
If FormsAuthentication.IsEnabled AndAlso contextWrapper.Request.IsAjaxRequest() Then
    contextWrapper.Response.SuppressFormsAuthenticationRedirect = True
End If

Проблема заключается в том, что при создании нового контекста с использованием HttpContextWrapper функция IsPostBack в веб-формах возвращает False.Это нарушает работу многих страниц веб-форм, которые для правильной работы зависят от IsPostBack.

Глядя на некоторые документы Microsoft, похоже, что New HttpContextWrapper создает HttpContextBase, где в качестве контекста используется просто HttpContext.Поэтому я предполагаю, что IsPostBack воспринимает это как новый запрос вместо сообщения назад.

Как только я закомментирую новую строку HttpContextWrapper, IsPostBack снова будет работать правильно.

Может кто-нибудь дать мне некоторое представлениеили укажете мне направление, чтобы узнать, почему IsPostBack возвращает false и как я могу исправить ситуацию?

...