Ошибка недопустимого состояния просмотра

Я получаю неверную ошибку состояния просмотра в отношении ScriptResource.axd. Просто интересно, может ли кто-нибудь из вас помочь мне в этом. Ошибка:

2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - Request start - URL: /Web/ScriptResource.axd?d=E9hlvtsn8Gr1MyjysW1gFDFYr4CVwstY-sC22tRu5V8d7UyEYz3FhVYGrlhY87n2ihgKh58RrMRhK-Yk2WcQahEaCg_asTInqHK
2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - Application_AuthenticateRequest started
2009-02-24 09:46:30,021 [13] ERROR ASP.global_asax [(null)] - Unexpected error.  User presented with Site Error page.
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)

Это происходит в производственной среде. Я не могу воспроизвести это ни в среде разработки, ни в тестовой среде. Также эти страницы могут быть доступны только авторизованным пользователям. Было бы действительно, если бы вы могли пролить свет на этот вопрос.


person Community    schedule 25.02.2009    source источник
comment
Вы используете веб-ферму в своей производственной среде?   -  person Tsvetomir Tsonev    schedule 26.02.2009


Ответы (9)


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

Ошибка IE8

Microsoft заявила, что ошибка в IE8 будет (в некоторых случаях) генерировать ложные запросы к серверу, которые не влияют на пользователя, но приводят к ошибкам, регистрируемым на стороне сервера.

См. Это обсуждение здесь: Ошибка IE8 - 4K сброшено - «Недопустимое состояние просмотра», когда загрузка ScriptResource.axd (изменить: ссылка теперь по какой-то причине требует входа в систему, извините)

... в частности, обновление EricLaw-MSFT, когда он говорит:

Стоит упомянуть, что любой, кто сталкивается с проблемой здесь, в IE6 / IE7 или Firefox, сталкивается с другой проблемой, которая не связана с проблемой IE8, описанной ниже.

В этом сообщении блога также описаны ошибки: Ошибки в загрузчике просмотра вперед в IE8

Они говорят, что изменение способа установки Content-Type поможет с некоторыми ошибками, хотя и не со всеми - они говорят, что это вызвано различными неясными обстоятельствами, на которые они все еще смотрят.

Обновление. По состоянию на 01 апреля 2010 г. эти ошибки IE8 были исправлены с помощью накопительного обновления IE8 (KB980182).
Это сообщение: IE8 Lookahead Downloader Fixed дает более подробную информацию об ошибках и других возможных / частичных обходных решениях (например, этот) кроме ожидания загрузки исправления всеми в мире.

Другие браузеры

Еще не понял, но другие браузеры также генерируют эти ошибки, предположительно по другим причинам.

Веб-фермы

Эта проблема не ограничивается сайтами, работающими на веб-фермах, но если вы используете ферму, ознакомьтесь с этим ответом от jesal, который может помочь

person codeulike    schedule 04.11.2009

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

Другая возможность - дата сборки в будущем. Это приводит к разного рода неясным проблемам, и их стоит проверить. Может ваш сервер находится в другом часовом поясе?

person Tsvetomir Tsonev    schedule 25.02.2009

Я бы посоветовал взглянуть на this ... он в основном описывает некоторые случаи, когда это может происходить в зависимости от типа документа. У нас была аналогичная проблема, и она, казалось, появлялась только беспорядочно ... для нас это был конфликт между нашим типом документа XHTML и javascript, который у нас был на странице. Мы смогли решить эту проблему, убедившись, что весь наш javascript правильно заключен в теги.

<script>
     mycode;
</script>

станет

<script>
// <![CDATA[
    mycode;
// ]]>
</script>

Это может быть не идентичная проблема, но если у вас есть xhtml doctype, посмотрите, есть ли у вас неэкранированные символы, которые не являются допустимым XML (например, символы '‹').

person Beska    schedule 25.02.2009

MS рекомендует не объявлять кодировку с помощью метатега и настройки вместо этого он будет использоваться как HTTP-заголовок.

Так что удали

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">

и добавить

Response.AddHeader("Content-Type", "text/html; charset=utf-8");

person palmsey    schedule 09.10.2009
comment
Это поможет в некоторых, но не во всех случаях. - person EricLaw; 28.12.2009

Это может произойти, если machineKey пула приложений, который получает запрос на scriptresource.axd, отличается от ключа пула приложений, обслуживающего исходную страницу. Это наиболее вероятно, если вы используете веб-ферму. Это также может произойти на одном сервере при перезапуске пула приложений, так как будет сгенерирован новый машинный ключ. Решение любого из них - поместить фиксированный ключ machineKey в ваш web.config.

person stevemegson    schedule 25.02.2009

Я заметил, что бета-версия Firefox 3.1 вызывает недопустимые ошибки состояния просмотра. Возможно, вы захотите просмотреть свои журналы, чтобы узнать, какой браузер используется при возникновении этих ошибок.

person Community    schedule 27.02.2009
comment
Привет, Мэтт, да, я просмотрел журналы. Это случилось с IE8, IE7, а также с FF3. Так что трудно поверить, что это проблема конкретного браузера. Пока копаю :) Спасибо! - person CH81; 02.03.2009

Такая же ошибка для User-Agent: Mozilla / 4.0 (совместимый; MSIE 7.0; AOL 9.0; Windows NT 6.0; Trident / 4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729 ; .NET CLR 3.0.30618)

Я попытался изменить / удалить объявление типа документа и исказить javascript в // ‹! [CDATA [и все еще есть исключения ...

На данный момент все пришли с одного IP

person Catalin DICU    schedule 23.06.2009
comment
(Это та же ошибка IE8. Обратите внимание на Trident / 4.0 в строке UA). - person EricLaw; 28.12.2009

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

person Community    schedule 14.07.2009

Насколько велико состояние просмотра? Некоторые прокси-серверы усекают состояние большого просмотра.

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

person Miyagi Coder    schedule 06.08.2009