【发布时间】:2010-09-14 14:39:40
【问题描述】:
我正在从 UpdatePanel 发出一个请求,该请求需要 90 秒以上。我收到此超时错误:
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerTimeoutException:服务器请求 超时。
有谁知道是否有办法增加通话超时前的时间?
【问题讨论】:
标签: asp.net ajax updatepanel
我正在从 UpdatePanel 发出一个请求,该请求需要 90 秒以上。我收到此超时错误:
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerTimeoutException:服务器请求 超时。
有谁知道是否有办法增加通话超时前的时间?
【问题讨论】:
标签: asp.net ajax updatepanel
ScriptManager 上有一个属性,允许您以秒为单位设置超时。默认值为 90 秒。
AsyncPostBackTimeout="300"
【讨论】:
在我的例子中,ScriptManager 对象是在母版页文件中创建的,然后与内容页文件共享。因此,要更改内容页面中的 ScriptManager.AsyncPostBackTimeout 属性,我必须访问内容页面的 aspx.cs 文件中的对象:
protected void Page_Load(object sender, EventArgs e)
{
. . .
ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
_scriptMan.AsyncPostBackTimeout = 36000;
}
【讨论】:
RadScriptManager 吗?
这成功了(基本上只是忽略了所有超时):
<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
请按照以下步骤操作:
第 1 步:在 web.config 中,设置 httpRuntime maxRequestLength="1024000" executionTimeout="999999"
第 2 步:将以下设置添加到网页的 ScriptManager:AsyncPostBackTimeout ="360000"
这将解决您的问题。
【讨论】:
这可以通过更改 IIS 中的 ASP 脚本超时来配置。
它位于您网站的属性、虚拟目录、配置按钮,然后在选项选项卡上。
或通过设置 Server.ScriptTimeout 属性来设置它。
【讨论】:
好吧,我想如果你只是想将请求丢弃,并且它可能永远不会完全执行......
将 AsyncPostBackTimeOut 属性添加到 ScriptManager 标记,以将默认超时时间从 90 秒更改为对您的应用程序更合理的值。
此外,考虑更改接收调用的 Web 服务以加快移动速度。 90 秒也可能是互联网时间的无穷大。
【讨论】:
您面临的问题是您的应用程序在 SQL 数据库查询中遇到超时。返回输出所需的时间比默认值多。所以需要增加 ConnectionTimeout 属性。
您可以通过多种方式做到这一点:
连接字符串具有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>
您可以将AsyncPostBackTimeout="6000" 放在.aspx 页面中
<asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
</asp:ToolkitScriptManager>
您可以在SqlCommand 中设置超时,您将在此处调用.cs 文件中的存储过程。
command.CommandTimeout = 30*1000;
希望你有解决办法!
【讨论】: