неверная ошибка состояния - OnPreRender - PullRequest
0 голосов
/ 19 января 2010

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

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

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

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 с помощью //<![CDATA[ //]]>
  2. я уже установил enableViewStateMac в false.

Из рассмотрения всех ошибок угадываетсяПараметр "d", кажется, фокусируется на одном пользовательском контроле на моем сайте.в этом элементе управления я изменяю видимость текста div + в функции OnPreRender usercontrol.

protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            PreparePage();
        }

Могут ли ошибки быть связаны с поведением usercontrol?

спасибо!

Ответы [ 2 ]

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

Недопустимое исключение ViewState, как правило, из встроенной проверки событий ASP.NET.Отключение EnableViewStateMac просто останавливает шифрование на основе MAC, а не проверку состояния представления.Для этого вам нужно установить EnableEventValidation = "false" в директиве Page.

Относительно того, почему это происходит ... три возможных причины:

1) Вы изменяете содержимоеэлемент управления на стороне клиента (например, элементы DropDownList).

2) Страница отправляется обратно до визуализации поля проверки ViewState.

3) Ваш сайт является цельюВредоносный скрипт ищет уязвимости ... в этом случае EventValidation делает свою работу.

Я бы сказал, что # 1 наиболее вероятно ... bu # 2 также очень распространено, особенно когда вы видитеэта ошибка противоречива.

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

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

...