EF代码优先 - System.ComponentModel.Win32Exception:等待操作超时

时间:2017-02-15 01:40:04

标签: asp.net-mvc vb.net sql-server-2012 ef-code-first

我正在使用ef代码优先创建一个Web API项目。对于简单的查询,它运行良好。但对于有大量连接的查询(目前我在使用4个表连接查询时遇到问题。有时,即使一个表查询也会发出此错误),它说

  

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.ComponentModel.Win32Exception:等待操作超时

奇怪的是,当我在每个' For Each'查询执行查询或在“每个人”中的一个值。当我删除断点时,它会发出此错误。为什么会这样?

我已经尝试将下面的代码放在迁移文件夹的Configuration.vb文件中,但仍然无法正常工作。

CommandTimeout = Int32.MaxValue

我还检查了SQL Server中的连接设置。也没有帮助。

Tools -> Options -> Query Execution -> Execution Timeout = 0s

我还将IIS中的频道超时更改为100000,但它也不起作用。

 Connections pane -> click the server node -> Sites node -> In Actions pane, click FTP Site Defaults -> Connections -> Control Channel Timeout and Data Channel Timeout and Unauthenticated Timeout i set them to = 100000

我担心如果我不得不在每个查询中都设置断点,生产阶段会发生什么?有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我使用EF6和MVC5。到目前为止,我还没有得到一个答案,建议将CommandTimeout放在Code-First迁移期间创建的DbContext文件中(从服务器导入数据库表)。因此,为了与我在同一条船上的其他人,将下面的代码放在Models文件夹中DbContext.vb文件的New()构造函数中。

Me.Database.CommandTimeout = Int32.MaxValue

我也把

CommandTimeout = Int32.MaxValue

在Migrations文件夹中的Configurations.vb文件中也是如此。当我尝试删除Configurations.vb文件中的CommandTimeout时,似乎查询需要更长的时间来执行。