您的位置:首页 > 产品设计 > UI/UE

关于Sys.WebForms.PageRequestManagerServerErrorException

2009-09-01 11:09 441 查看
在一个使用了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>


甚至可以在其中捕获到该异常的时候不弹出任何提示,而将页面跳转到指定的错误页面。如此一来比起单纯的弹出一串英文提示要友好许多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐