帮酷LOGO
0 0 评论
文章标签:  framework  dnn  

介绍

最近我遇到了一个奇怪的问题。 调用存储过程的方法超过 90秒,而调用该方法的按钮为 inside。 错误消息为" SysWebForms.PageRequestManagerTimeoutException: The server request timed out. "

outtime.jpg

背景

在网上搜索之后,我发现它是由 ScriptManager的属性 AsyncPostBackTimeout 引起的。 它有一个整数值,以秒为单位表示 time-out。 AsyncPostBackTimeout 属性的默认值为 90秒。 但我的程序将持续 200秒。

解决方案之一

大多数文章建议在ASPX控件中添加 property-value likes" AsyncPostBackTimeout=360000"。

例如:

<asp:ScriptManagerID="ScriptManager1"AsyncPostBackTimeOut="360000"runat="server"/>

解决方案二

但最近我正在使用DNN框架。 如果使用" AJAX.RegisterScriptManager()",就不应该在DNN模块文件中存在任何 ScriptManager 控件。 但是我们可以获取当前注册的ScriptManager 对象并设置 AsyncPostBackTimeout 属性,或者通过以下步骤使用 SetScriptManagerProperty() 方法。

例如:

if (AJAX.IsInstalled())
{
 AJAX.RegisterScriptManager();
 ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
 scriptManager.AsyncPostBackTimeout = 360000;
}

或者:在 DotNetNuke.Framework.AJAX 类中使用 SetScriptManagerProperty 方法。

例如:

if (AJAX.IsInstalled())
{
 AJAX.RegisterScriptManager();
 AJAX.SetScriptManagerProperty(this.Page, "AsyncPostBackTimeout", 
 new Object[] { 360000 });
}

解决方案三

实际上,我们可以通过添加 below JavaScript来隐藏" PageRequestManagerTimeoutException"的这个问题。 但不推荐。

例如:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
 if (args.get_error()!= undefined)
 {
 elseif(args.get_error().name === 
 'Sys.WebForms.PageRequestManagerTimeoutException')
 {
 args.set_errorHandled(true);
 }
 else {
 // not this kind of error so let the default behavior happen. }
 }
}

历史记录

  • 13th 2010年01月: 初始帖子


文章标签:  framework  dnn  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语