Asp.net Неверное состояние представления - Может быть, IE8 4k упал ошибка? - PullRequest
2 голосов
/ 25 января 2010

Я получаю более 100 ошибок в день на моем веб-сайте с System.Web.HttpException: неверное состояние просмотра. в System.Web.UI.Page.DecryptStringWithIV

Сайт asp.net 3.5 работает на iis6, не работает в веб-саду / веб-ферме, на одном сервере.

Сайт использует xhtml doctype.

Размер просмотра варьируется от 2 до 20 КБ

Вот несколько примеров ошибок.

Machine: ML Framework Version: 2.0.50727.3603 Assembly Version: 6.5.3664.33889     
Source: http://www.domain.com/WebResource.axd?d=z5VmXXoSLLpQHoPictureAlert     
Exception: System.Web.HttpException: Invalid viewstate. at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context)     
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)     

Machine: MLFramework Version: 2.0.50727.3603 Assembly Version: 6.5.3664.33889     
Source: http://www.mydomain.com/ScriptResource.axd?d=SE0Ej7OlEAx91j2Cjv_6KkRPplqT-5wB4M7CZPdGdGn3LahLwqlRPApUcdxBsbFXYHZ91Q76FHAHWgHs8SmOC4zemr7    
siym0QY0rF3XtJTu%3C/a%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20id=     
Exception: System.Web.HttpException: Invalid viewstate. at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at     
System.Web.UI.Page.DecryptString(String s) at System.Web.Handlers.ScriptResourceHandler.DecryptParameter(NameValueCollection queryString) at     
System.Web.Handlers.ScriptResourceHandler.ProcessRequestInternal(HttpResponse response, NameValueCollection queryString,     
VirtualFileReader fileReader) at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context) at     
System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) at     
System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at     
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)    

Решения, которые я уже пробовал:

  1. Обтекание всего встроенного JavaScript с помощью //
  2. Установка enableViewStateMac в false
  3. Установка maxPageStateFieldLength равным 5000 байт.
  4. Определите MachineKey в web.config, используя http://www.developmentnow.com/articles/machinekey_generator.aspx

Я не могу понять, что вызывает ошибку или какая страница их генерирует. Помогите, пожалуйста! спасибо!

Ответы [ 3 ]

0 голосов
/ 25 января 2010

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

Мы обрабатываем ошибку на базовой странице (от которой мы наследуем все наши страницы) в процедуре page_error. Затем мы проверяем сообщение об ошибке для этого, а также для других, таких как: потенциально опасное значение строки запроса, неверный аргумент обратной передачи или обратного вызова и т. Д. Если существует одна из этих ошибок, мы сохраняем ее в ходе аудита и имеем процесс, который обрабатывает их отдельно .

Кроме того, находится ли сайт на ферме сессий / веб-сайтов? Важно, чтобы ключи машин были одинаковыми на обоих серверах. Джефф Этвуд также написал статью об этом: http://www.codinghorror.com/blog/archives/000132.html

0 голосов
/ 25 января 2010
  1. Отрегулируйте настройки в пулах приложений, чтобы в пиковые периоды рециркуляция была менее вероятной.
  2. Используйте определенный ключ в machine.config для предотвращения автоматической генерации ключей при каждом запуске процесса
  3. Публиковать только на одной странице ASPX
  4. Отключить брандмауэр и антивирусное программное обеспечение

нашел их здесь: http://support.microsoft.com/kb/555353

0 голосов
/ 25 января 2010

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

Сессия может быть лучшим способом сохранить значения в постбэках.

...