Thursday, February 5, 2009

Erro do AJAX .Net no Internet Explorer, comédia!

Bem que o IE é uma porcaria todo mundo sabe. Tirando a lentidão do coitado ainda é cheio de bugs, e cá vai mais um.

Em aplicações .Net ASPX com AJAX, pode acontecer de algum sortudo ter o seguinte erro de JavaScript após algum tempo de execução:

Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '


E o melhor deste erro é que só acontece no IE, no Firefox funciona sempre perfeitamente. Basicamente um problema exclusivo do IE, ainda não sei por que não colocam o Firefox nas empresas, a desculpa de que não é corporativo não cola.

Para resolver isto a "melhor" maneira para o usuário é, limpar os arquivos temporários e reiniciar o browser :D

Andei procurando a algumas semanas uma solução para isto e a única que me ajudou foi neste link, lá em baixo:

http://weblogs.asp.net/leftslipper/archive/2007/02/26/sys-webforms-pagerequestmanagerparsererrorexception-what-it-is-and-how-to-avoid-it.aspx#6815054

# re: Sys.WebForms.PageRequestManagerParserErrorException - what it is and how to avoid it
Friday, January 02, 2009 1:20 PM by Arjan Douwes
I am experiencing the same issue with my Ajax.net website. After adding <customErrors mode="Off"/> to the web.config file at the problem seems to be that the site is being hosted on a webfarm and the SessionState is being encrypted using the MAC Address. The issue with webfarms is that the EnableViewStateMac is by default set to True which causes problems.
In the web.config I changed the <Page> tag to <Page EnableViewStateMac="False">
I also added
EnableEventValidation="false" EnableViewStateMac="false"
to the <%@ Page ... directive of the aspx pages.
These two changes to the website solved my issue.


Ou seja, mudar no web.config o customErrors:


<customErrors mode="Off"/>


E colocar nos ASPX que trabalham com AJAX:


<%@ Page Language="C#" EnableEventValidation="false" EnableViewStateMac="false" ...


Pronto, no meu caso resolveu, e se tiveres sorte também poderá resolver.

No comments:

Post a Comment