通过 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