【发布时间】:2011-02-07 22:17:15
【问题描述】:
我正在使用 MVC3、.NET 框架 4.0 和实体框架开发一个 ASP.NET 网站。当我运行应用程序并对 SQL Server 2005 数据库执行简单选择时,我收到以下错误:
“抛出了 System.Data.SqlClient.SqlException:”超时。在操作完成之前超时时间已过或服务器没有响应。"
事情就是这样。我尝试登录并从管理工作室执行相同的查询,它工作。我使用 .NET 框架 4.0 和执行完全相同的查询的实体框架开发了一个小型控制台应用程序,它返回了我需要的信息。我什至从使用实体框架切换到 ADO.NET 类(SqlConnection 和 SqlCommand),当从 SqlCommand 实例执行选择时,我得到了完全相同的错误。
当我使用实体框架创建模型时,我能够从向导连接到数据库并且工作正常。我创建的所有类都没有任何问题。
请不要告诉我解决方案是增加任何超时,因为查询非常小(最多 20 条记录),正如我之前所说,当使用相同的技术甚至相同的技术从控制台应用程序运行它时它工作正常我放在下面的代码。
这是给我问题的代码:
MLIBEntities dbMLIB = new MLIBEntities();
var searchResults = (from s in dbMLIB.Sets
where s.setmap1.StartsWith(accountNumber)
select s);
return searchResults.ToList();
运行searchResults.ToList()时抛出异常;
这是实体类使用的连接字符串。我确定它使用了连接字符串,因为我用语法错误对其进行了修改并且它们被检测到了。
<connectionStrings>
<add name="MLIBEntities" connectionString="metadata=res://*/Models.MlibDBModel.csdl|res://*/Models.MlibDBModel.ssdl|res://*/Models.MlibDBModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=HERPADERP;Initial Catalog=MLIB;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=200"" providerName="System.Data.EntityClient" />
</connectionStrings>
我猜这一定是 MVC Web 应用程序中某处的配置问题,或者我只是缺少 Web.config 文件中的某些内容。你们中有人遇到过这个问题吗?我知道这真的很奇怪。
感谢您的帮助。我真的没有想法。
最后一件事。我运行了 SQL 探查器,似乎查询永远不会到达数据库服务器。关于为什么会发生这种情况的任何想法?
【问题讨论】:
-
200 秒后真的超时了吗?
-
真的,与 ASP.NET MVC 3 无关。
-
SQL Server 在本地还是在网络上?
-
您是说某些查询有效,但 searchResults 无效?您是否在控制台应用程序的 web/config 文件中使用了相同的 connectionStrings 部分?您在使用 ADO.NET core 时使用了什么连接字符串?
-
好的,请求在大约 10 秒后抛出超时。 SQL Server 在网络上,但正如我所说,我启动了探查器跟踪(从我运行应用程序的同一台机器)并且请求似乎永远不会到达服务器。
标签: c# entity-framework-4 timeout