ASP.NET UpdatePanel超时

时间:2020-03-06 14:59:26  来源:igfitidea点击:

我正在从" UpdatePanel"发出请求,该请求需要90秒钟以上的时间。我收到此超时错误:

Microsoft JScript runtime error:
  Sys.WebForms.PageRequestManagerTimeoutException: The server request
  timed out.

有谁知道在通话超时之前是否有增加时间的方法?

解决方案

这可以通过更改IIS中的ASP脚本超时来配置。

它位于网站的属性,虚拟目录,配置按钮中,然后在选项选项卡上。

或者通过设置Server.ScriptTimeout属性进行设置。

这可以解决问题(基本上只是忽略所有超时):

<script type="text/javascript"> 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) { 
            if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') { 
                            args.set_errorHandled(true); 
            } 
        }); 
    </script>

ScriptManager上有一个属性:

AsyncPostBackTimeout="300"

好吧,我想如果我们只是想放弃该请求而又有可能从未完全执行该请求的话,那将是可行的...

将AsyncPostBackTimeOut属性添加到ScriptManager标记中,以将默认超时从90秒更改为更适合应用程序的时间。

此外,请考虑更改接收呼叫的Web服务以使其移动更快。 90秒也可能是互联网时间的无限长。

在我的情况下,ScriptManager对象是在母版页文件中创建的,然后与内容页文件共享。因此,要更改内容页面中的ScriptManager.AsyncPostBackTimeout属性,我必须访问内容页面的aspx.cs文件中的对象:

protected void Page_Load(object sender, EventArgs e)
{
     . . . 
     ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
     _scriptMan.AsyncPostBackTimeout = 36000;
}

请按照以下步骤操作:

步骤1:在web.config中,设置httpRuntime maxRequestLength =" 1024000" executionTimeout =" 999999"

步骤2:将以下设置添加到网页的ScriptManager中:AsyncPostBackTimeout =" 360000"

这样可以解决问题。