【问题标题】:EF code-first - System.ComponentModel.Win32Exception: The wait operation timed outEF 代码优先 - System.ComponentModel.Win32Exception:等待操作超时
【发布时间】:2017-02-15 01:40:03
【问题描述】:

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

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

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

奇怪的是,当我在执行查询的“For Each”查询或“For Each”内的某个值处设置断点时,它工作正常。当我删除断点时,它会发出此错误。为什么会这样?

我已经尝试将以下代码放入 Migrations 文件夹的 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

我担心如果我不得不在每个查询中都设置断点,那么在生产阶段会发生什么?谁能帮帮我?

【问题讨论】:

  • 除非你附加调试器,否则你的断点不会被命中
  • 我该怎么做?
  • 这是我对您担心生产中会有断点的回答。
  • @T.S.所以我必须设置断点吗?我尝试输入代码: If (Debugger.IsAttached = False) Then Debugger.Launch() End If .. 但同样的错误在同一个地方。
  • 你为什么不实际处理异常,写日志ex.tostring 看看发生了什么?什么断点?断点仅用于调试。

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


【解决方案1】:

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

Me.Database.CommandTimeout = Int32.MaxValue

我也放了

CommandTimeout = Int32.MaxValue

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多