【问题标题】:ASP.NET UpdatePanel Time OutASP.NET 更新面板超时
【发布时间】:2010-09-14 14:39:40
【问题描述】:

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

Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerTimeoutException:服务器请求 超时。

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

【问题讨论】:

    标签: asp.net ajax updatepanel


    【解决方案1】:

    ScriptManager 上有一个属性,允许您以秒为单位设置超时。默认值为 90 秒。

    AsyncPostBackTimeout="300"
    

    【讨论】:

    • 应该在哪里添加?服务器端/客户端,任何进一步的解释将不胜感激。
    • 通过设置 AsynchPostBackTimeout="180" 将超时前允许的秒数加倍对我的解决方案非常有效。
    • @owengerig 这个属性应该被添加到你的 ScriptManager 中
    • @owengerig :这是 ScriptManager 的一个属性,因此可以在客户端添加它,但如果您想要动态,您也可以使用 ScriptManager 的 id 从服务器端访问它,例如.sc1。 AsyncPostBackTimeout = "300"
    【解决方案2】:

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

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

    【讨论】:

    • 嗨@narayan 这也适用于RadScriptManager 吗?
    • @NagibMahfuz,不幸的是没有办法试用 RadScriptManager,所以我不能肯定地回答。如果您自己尝试过,请告诉我们结果如何。
    【解决方案3】:

    这成功了(基本上只是忽略了所有超时):

    <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> 
    

    【讨论】:

    • 我收到上面代码的错误。 ReferenceError: Sys is not defined
    【解决方案4】:

    请按照以下步骤操作:

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

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

    这将解决您的问题。

    【讨论】:

      【解决方案5】:

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

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

      或通过设置 Server.ScriptTimeout 属性来设置它。

      【讨论】:

      • Server.ScriptTimeout 是用于普通脚本还是异步?
      • 普通脚本,不是异步脚本。
      【解决方案6】:

      好吧,我想如果你只是想将请求丢弃,并且它可能永远不会完全执行......

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

      此外,考虑更改接收调用的 Web 服务以加快移动速度。 90 秒也可能是互联网时间的无穷大。

      【讨论】:

        【解决方案7】:

        您面临的问题是您的应用程序在 SQL 数据库查询中遇到超时。返回输出所需的时间比默认值多。所以需要增加 ConnectionTimeout 属性。

        您可以通过多种方式做到这一点:

        1. 连接字符串具有ConnectionTimeout 属性。它是一个属性,用于确定您的代码将等待打开数据库连接的最大秒数。您可以在web.config 的连接字符串部分设置连接超时。

          <connectionstrings>
              <add name="ConnectionString" 
                   connectionstring="Database=UKTST1;Server=BRESAWN;uid="      system.data.sqlclient="/><br mode=" hold=" /><br mode=" html="> <asp:ToolkitScriptManager runat=" server=" AsyncPostBackTimeOut=" 6000="><br mode=">
              </add>
          </connectionstrings>
          
        2. 您可以将AsyncPostBackTimeout="6000" 放在.aspx 页面中

          <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
          </asp:ToolkitScriptManager>
          
        3. 您可以在SqlCommand 中设置超时,您将在此处调用.cs 文件中的存储过程。

          command.CommandTimeout = 30*1000;
          

        希望你有解决办法!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多