我支持ASP.Net 3.5 Web应用程序,用户在尝试运行报告30秒后遇到超时错误。看看网络似乎很容易改变代码中的超时,遗憾的是我无法访问代码并重新编译。有没有为web应用程序,工作进程,IIS或整个机器配置默认值?
这是堆栈跟踪,直到它在System.Data中的位置,以防我错过了其他一些问题:
[SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1948826
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844747
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +83
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +130
System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +162
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +115
- 编辑
代码本身之外必须有一些东西 - 我已经下载了数据库并在测试服务器上安装的同一个网站上运行它,它运行时间超过30秒并返回报告。我在live和test上比较了.Net目录下的machine.config和web.config文件它们看起来是一样的,比较两个IIS设置,还看了一下SQL Server的配置,唯一的区别就是live服务器集群在64位W2K3上,而测试服务器则在32位上。
答案 0 :(得分:14)
不幸的是,我过去读过的所有内容都说不,不能通过配置来控制。这是一个无赖。
答案 1 :(得分:3)
您不能从连接字符串或某些外部设置设置命令超时,抱歉。
有时驱动程序会将连接字符串中的'timeout'参数解释为连接超时和命令超时时间,但这在技术上是一个“错误”。一定要喜欢标准。
答案 2 :(得分:2)
我所知道的最好的是你可以在连接字符串中设置一个连接超时,它控制ADO在尝试连接到SQL Server时等待的时间,并且不会影响命令超时。
我个人认为应该有办法改变这个设置。假设这个组件并不强大,那么最好的选择可能是对代码进行反向工程,修改源代码并使用新名称重新部署程序集。
答案 3 :(得分:0)
虽然卷起自己并不太难?只需在AppSettings下创建自定义SqlCommandTimeout设置即可。如果您已经使用某种SqlCommandFactory来创建SqlCommand或者具有某种SqlCommand基类,那么您可以轻松地进行更改。如果没有,那么你可能不太关心你的代码,无论如何都想把它放在配置文件中。
此致 詹姆斯