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