调用长存储过程时,此页面无法显示错误

时间:2015-06-11 09:36:51

标签: asp.net database stored-procedures timeout

我正在使用ASP.Net页面调用存储过程。存储过程需要很长时间,因此我将数据库命令超时属性设置为0,这意味着无限。我还在web.config中将executionTimeout设置为7200,这意味着2小时。

当从该页面调用存储过程时,经过很长时间后它会抛出错误:

  

此页面无法显示

enter image description here

我已经编写了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)

没有内部异常。

1 个答案:

答案 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"/>  

并添加机器密钥