Я работаю с устаревшим интранет-сайтом.Сайт использует веб-формы, но с тех пор начал использовать 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 и как я могу исправить ситуацию?