2010-01-19 8 views
0

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

Веб-сайт 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 ложь.

От взгляда на все ошибки, угадывающие параметр «d», кажется, что он сосредоточен на одном пользовательском управлении на моем веб-сайте. В этом элементе управления я изменяю видимость текста div + в функции UserPontrol OnPreRender.

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

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

спасибо!

+0

Является ли это переопределяющим событием в пользовательском элементе управления или родительской странице? –

+0

OnPreRender в usercontrol. – dan

ответ

0

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

+0

это для вашего ответа, сайт не в webgarden/webfarm. Вы думаете, что есть еще смысл использовать фиксированный ключ машины? – dan

+0

также, я уже установил enableViewStateMac = "false", который должен отменить эффект машинных клавиш. – dan

+0

Я добавил фиксированный ключ машины, чтобы быть уверенным ... ошибка удачи все еще продолжается. любые другие идеи? благодаря! – dan

0

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

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

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

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

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

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

+0

Я не хочу, чтобы проверить валидацию в представлении, OFF, я верю, что она существует с определенной целью. любая идея о том, как отслеживать страницы/элементы управления, вызывающие ошибки? – dan

+0

Как функция безопасности, я бы сказал, что это почти самое главное. MS сами советуют отключить это в таких ситуациях. Что касается обнаружения контроля ... это происходит последовательно?Если нет, то это, вероятно, №2, и вы не можете сделать ничего, кроме уменьшения размера вашей отображаемой страницы. – Bryan

+0

Да, это происходит последовательно, каждый день 100+ ошибок. когда параметр «d» имеет 3-5 повторяющихся значений. Как узнать, с какой страницы возникает ошибка? – dan

Смежные вопросы