最近在ASP.NET中使用AJAX的时候,碰到这么一个错误,错误的全称是:
Sys.WebForms.PageRequestManagerParserErrorException:The message received from the server
count 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 '|
网上查了一下,发现有人提高了这么一个解决方案:
“我在用Response.Redirect()或Response.Write()进行URL带参数的页面重定向时出现如题所示的错误。Ajax是无刷新的,而使用Response进行带参重定向时需要刷新页面。所以只须在UpdatePanel下设置“asp:PostBackTrigger”的“ControlID”为指定的控件名称即可,如:
”
按照上面所述的方法修改之后,发现确实不再提示这个错误,但是却无法满足我的要求。因为我用AJAX就是为了实现页面无刷新,而现在使用了PostBackTrigger之后,页面肯定会刷新。后来继续寻找,终于看到有人作了一个这样的回答:
“设置页面属性EnableEventValidation="false" 就可以了”。
试了一下果然成功了,而且完全满足要求。但是这个EnableEventValidation又是何方神圣呢?这样设置会产生什么样的问题吗?于是查了一下EnableEventValidation的解释,原来是.NET 2.0中出现的新家伙,怪不得遍寻网络找不到答案。看MSDN总是让人很头疼,所人看看别人是怎么说的吧。
---------------------------------
添加了"event validation"的功能, ASP.NET会检查 POST方法中的所带的参数,如果认为不合法,就会抛出异常。这个设计的目的是为了防止恶意用户利用post 方法发送一些恶意数据,但是有时一些常见的case也会出错。
1. 禁止这个功能, 但同时会失去一些安全保障: