关于Sys.WebForms.PageRequestManagerServerErrorException

    在一个使用了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脚本:

    <!-- Code to replace text of 500 error --> <mce:script type="text/javascript"><!-- Sys.WebForms.PageRequestManager.getInstance().add_endRequest( function(sender, e) { if (e.get_error()) { if (e.get_response().get_statusCode() == 500) { alert("页面超时,请重新登录! "); e.set_errorHandled(true); window.navigate("Login.aspx"); } } } ) // --></mce:script>

    甚至可以在其中捕获到该异常的时候不弹出任何提示,而将页面跳转到指定的错误页面。如此一来比起单纯的弹出一串英文提示要友好许多了。

你可能感兴趣的:(JavaScript,服务器,脚本,asp.net,processing,ajax框架)