Случайная неверная ошибка в представлении

Я знаю, что есть много вопросов по этой теме, и я прочитал их все.

Я использую IIS8,.Net 4.5.

Пользователи случайно получают недопустимую ошибку в представлении, я не могу понять это. Как только это произойдет, единственный способ вернуться на сайт - очистить кеш браузера.

В моем web.config у меня есть:

<system.web>
<machineKey validationKey='....key here'   decryptionKey='....decrypt key is valid here'   validation='SHA1'/>
    <!--<hostingEnvironment shadowCopyBinAssemblies="false" />-->
    <authentication mode="None" />
    <compilation targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
...
</system.web>

Я запускаюсь на виртуальном частном сервере, и мне еще предстоит найти viewstate размером более 9kb.

Мой пул приложений установлен на перезагрузку в 3 часа ночи, один раз в день.

Моя страница использует панели обновления, возможно, пользователь нажимает "назад"? Но я видел, что это просто посещение страницы без щелчка.

Одна вещь, которую я заметил, у меня есть 3 разных сайта, использующих один и тот же идентификатор пула приложений, но пулы приложений являются отдельными. В machine.xml нет машинных клавиш, но только в моем web.config.

Ответ 1

Несколько возможностей для исследования:

  • Панели обновления меняют значения полей формы (которые используются для вычисления ViewState), а затем страница возвращает POST обратно на сервер, где новые значения завершают проверку. См. этот пост

  • У вас включено кэширование (выполните трассировку заголовков HTTP - убедитесь, что у вас нет инструментов для разработчиков), из-за чего создается недействительный ViewState с помощью UpdatePanel.

  • Используете Server.Execute в любом месте? (см. ссылку выше для этого)

  • (менее вероятно) Заставляет ли ваш "виртуальный частный сервер" переноситься на другое оборудование (возможно, не зная его)?