Сохранение состояния сеанса ASP.NET PageViewState
Это то что я сделал
- Создана новая папка под Corelibrary.
- Назвал его "Адаптеры"
- В разделе "Адаптеры" создан новый файл класса.
- Назван файл класса "PageStateAdapter.cs"
- Расширение из класса PageAdapter в "PageStateAdapter.cs"
- Добавьте переопределение для GetStatePersister(), как показано ниже.
Код:
using System.Web.UI;
using System.Web.UI.Adapters;
namespace eRecruitCore.Adapters
{
public class PageStateAdapter : PageAdapter
{
public override PageStatePersister GetStatePersister()
{
return new SessionPageStatePersister(this.Page);
}
}
}
- Создан файл браузера в Web->App-Browsers
В браузер добавлен следующий контент. Назван файл "Default.browser"
<browsers> <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Corelibrary.Adapters.PageStateAdapter" /> </controlAdapters> <capabilities> <capability name="requiresControlStateInSession" value="true" /> </capabilities> </browser> </browsers>
Убедитесь, что атрибут adapType соответствует пространству имен класса, которое было создано для адаптера состояния страницы.
По какой-то странной причине этот фрагмент кода работает не только в Chrome. Когда я говорю, что не работает, я имею в виду, что страница загружается нормально, но состояние просмотра - это большой сумасшедший беспорядок. Однако в IE и Firefox состояние просмотра небольшое, и страница загружается быстрее.
Следующее, что я сделал, - загрузил страницу в Fiddler под разными пользовательскими агентами. Если пользовательский агент chrome, то возникает то же состояние беспорядка просмотра.
Я проверил код несколько раз, я написал пример сайта для тестирования. Это отлично работает на Chrome. Я действительно не уверен, где искать. Любая помощь по этому вопросу приветствуется.
1 ответ
Я исправил это. Для старой проблемы код очищал все адаптеры. Я модифицировал его так, чтобы починка очищала только те адаптеры, которые были нужны. Теперь это работает без проблем.