我正在使用ASP.Net页面调用存储过程。存储过程需要很长时间,因此我将数据库命令超时属性设置为0,这意味着无限。我还在web.config中将executionTimeout设置为7200,这意味着2小时。
当从该页面调用存储过程时,经过很长时间后它会抛出错误:
此页面无法显示
我已经编写了try catch block并设置了断点,但它并没有进入catch。
如何解决此问题?
编辑
Here's the code:
try
{
//database is Sybase
ConnectionOpenedHere();
AseCommand command = new AseCommand();
command.Connection = con;
command.CommandType = CommandType.StoredProcedure;
command.CommandTimeout = 0;
//some more code here
command.CommandText = storedProcedure;
command.ExecuteNonQuery(); //The code doesn't go beyond this line and shows error after a long time
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
编辑
最后能够捕获异常。这是错误:
错误:与Sybase服务器的连接已丢失。全部活跃 交易已经回滚
Stack Trace:在Sybase.Data.AseClient.AseCommand.CheckResult(Int32 res)在Sybase.Data.AseClient.AseCommand.Execute()at Sybase.Data.AseClient.AseCommand.ExecuteNonQuery()at MyWebsite.Database.MyStoredProcedure(Int32子类型,字符串idno)
没有内部异常。
答案 0 :(得分:0)
在web.config文件中尝试以下解决方案。希望这会奏效。它将持续执行,直到您的商店程序运行..
但您的商店程序必须是完美的。
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="9999" />
</appSettings>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
<System.Web>
<httpRuntime maxRequestLength="102400" executionTimeout="3600" requestValidationMode="2.0"/>
</System.Web>
<sessionState timeout="10000"/>
并添加机器密钥