超时已过期。操作完成之前经过的超时时间或服务器未响应

时间:2016-04-07 08:56:42

标签: c# asp.net entity-framework sql-server-2008 datatables

我正在使用基于MVC(ASP.Net + C#)的应用程序。我使用Jquery DataTable来显示记录。现在问题是,对于某些记录,它的工作正常,对于某些记录,它给我一些错误,比如前端的“Timeout expired”。

我正在使用Entity Framework&存储过程以获取记录。对于某些值,它给了我超时错误。如果我直接用这些需要的参数执行这个Sp(其中它给出了Timeout Error),那么它工作正常(但在SQL Server中占用时间大约11秒)。我只是在结束时遇到了Timeout错误。

我收到以下错误。

  

{“超时已到期。超时时间在完成之前已经过去   操作或服务器没有响应。“} {”等待操作   超时“}

我尝试在web.config中添加

  1. 连接生命周期= 120;
  2. Min Pool Size = 120;
  3. 连接超时= 300;
  4. Max Pool Size = 1000; Pooling = true;
  5. <httpRuntime executionTimeout="180" maxRequestLength="2000000000" />
  6. 但没有锻炼。

    我的Web.Config如下。

    <add name="TestEntities" connectionString="metadata=res://*/Test2.csdl|res://*/Test2.ssdl|res://*/Test2.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Test2;integrated security=True;multipleactiveresultsets=True;Connection Lifetime=120;Min Pool Size=120;Connection Timeout=300;Max Pool Size=1000;Pooling=true;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    

        

    请帮忙。

    由于 -Nimesh

2 个答案:

答案 0 :(得分:2)

SQL Server为存储过程创建执行计划,以优化进一步执行的性能(参数嗅探)。当您在SSMS上执行此存储过程时,它可以正常工作,但是当您尝试从ASP.NET MVC应用程序执行相同的存储过程时,您将面临超时问题。 您可以通过重新创建/更改存储过程 WITH RECOMPILE 选项(在您的参数之后)来解决此问题。我今天遇到了这个问题;改变了我的存储过程 WITH RECOMPILE 选项,它就像一个魅力。有关详情,请参阅 Parameter Sniffing

答案 1 :(得分:1)

I have solved issue by increasing CommandTimeout To 120

Db.CommandTimeout = 120;