在一个使用了ASP.NET AJAX框架的ASP.NET 2.0工程中,有一个页面在用户正常登录停留一段时间后(大约20分钟)在操作其中的服务器端控件(例如DropdownList,被UpdatePanel包围)时候就会弹出:
“Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500. ”
经过分析该异常似乎不是服务器端脚本弹出的,而是由客户端脚本导致的异常。Google了半天也没找到比较高的解决办法,通常大家会给出这样几种方法:
1、在<%Page ...%>标签中增加 ValidateRequest="false", 经测试无效。
2、在Web.config中增加<pages enableEventValidation="false"/>,经测试仍然无效。
后来在一篇blog中看到另外一种迂回的解决办法,不是消除这个异常,而是用一种比较容易让用户理解的表述方式来替代这个异常,不至于让用户使用过程中无意间碰到这个异常的时候感到不解。具体做法如下:
在<asp:ScriptManager>标签下插入以下javascript脚本:
甚至可以在其中捕获到该异常的时候不弹出任何提示,而将页面跳转到指定的错误页面。如此一来比起单纯的弹出一串英文提示要友好许多了。