通过 ASP.NET 代码隐藏的执行超时不会在 SQL Server Management Studio 中发生
Execution Timeout via ASP.NET codebehind that does not occur in SQL Server Management Studio
当 运行直接在 SQL Server Management Studio 中查询我的查询时,它工作正常,大约需要 4 秒。
当我在我的 ASP.NET 应用程序中 运行 它时,我得到:
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
即使我确定已将超时添加到连接字符串,请查看我的代码:
web.config
:
<connectionStrings>
<add name="conn1"
connectionString="data source=(local)\sqlexpress;Initial Catalog=mydb;User Id=myuser;Password=mypwd;"
providerName="System.Data.SqlClient" />
</connectionStrings>
后面的代码:
Public Shared Function GetConnection() As SqlConnection
Dim MyConnection As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("conn1").ToString)
Return MyConnection
End Function
Dim myConnection As SqlConnection = GetConnection()
myConnection.ConnectionString = ConfigurationManager.ConnectionStrings("conn1").ToString + "Connection Timeout=900" 'timeout in seconds
为什么这种行为不同?
你想要CommandTimeout instead of ConnectionTimeout.
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As New SqlCommand(queryString, connection)
command.CommandTimeout = 900
...
End Using
当 运行直接在 SQL Server Management Studio 中查询我的查询时,它工作正常,大约需要 4 秒。
当我在我的 ASP.NET 应用程序中 运行 它时,我得到:
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
即使我确定已将超时添加到连接字符串,请查看我的代码:
web.config
:
<connectionStrings>
<add name="conn1"
connectionString="data source=(local)\sqlexpress;Initial Catalog=mydb;User Id=myuser;Password=mypwd;"
providerName="System.Data.SqlClient" />
</connectionStrings>
后面的代码:
Public Shared Function GetConnection() As SqlConnection
Dim MyConnection As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("conn1").ToString)
Return MyConnection
End Function
Dim myConnection As SqlConnection = GetConnection()
myConnection.ConnectionString = ConfigurationManager.ConnectionStrings("conn1").ToString + "Connection Timeout=900" 'timeout in seconds
为什么这种行为不同?
你想要CommandTimeout instead of ConnectionTimeout.
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As New SqlCommand(queryString, connection)
command.CommandTimeout = 900
...
End Using