Неверная ошибка состояния - PullRequest
18 голосов
/ 26 февраля 2009

Я получаю недопустимую ошибку viewstate относительно 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)

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

Ответы [ 9 ]

5 голосов
/ 04 ноября 2009

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

IE8 Ошибка

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

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

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

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

В этом посте также описаны ошибки: Ошибки в IE8 Lookahead Downloader

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

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

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

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

Веб-фермы

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

2 голосов
/ 26 февраля 2009

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

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

1 голос
/ 09 октября 2009

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

Так что удалите

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

и добавьте

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

1 голос
/ 26 февраля 2009

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

<script>
     mycode;
</script>

станет

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

Возможно, это не та же проблема, но если у вас есть тип документа xhtml, посмотрите, есть ли у вас неэкранированные символы, которые не являются допустимыми XML-символами (например, символы <<). </p>

0 голосов
/ 07 августа 2009

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

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

0 голосов
/ 14 июля 2009

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

0 голосов
/ 23 июня 2009

Та же ошибка здесь для Пользовательский агент: 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)

Я попытался изменить / удалить объявление doctype и деформировать JavaScript в // <! [CDATA [, но все еще есть исключения ... </p>

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

0 голосов
/ 28 февраля 2009

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

0 голосов
/ 26 февраля 2009

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

...