C# 多个请求同时发生时出现连接字符串错误

C# 多个请求同时发生时出现连接字符串错误,c#,asp.net,sql-server,ado.net,connection-string,C#,Asp.net,Sql Server,Ado.net,Connection String,我在ASP.NET中的web应用程序有问题 我的错误是: 连接未关闭连接的当前状态为打开 当两个客户端在连接字符串中提交请求时 这是我的代码: Public Sub populateGrid(ByVal sql As String, ByVal grd As GridView) Try cmd = New SqlCommand(sql) da = New SqlDataAdapter(sql, conn) conn.Open()

我在ASP.NET中的web应用程序有问题

我的错误是:

连接未关闭连接的当前状态为打开

当两个客户端在连接字符串中提交请求时

这是我的代码:

Public Sub populateGrid(ByVal sql As String, ByVal grd As GridView)
    Try
        cmd = New SqlCommand(sql)
        da = New SqlDataAdapter(sql, conn)
        conn.Open()
        ds = New DataSet
        da.Fill(ds)
        grd.DataSource = ds
        grd.DataBind()
        conn.Close()
    Catch ex As Exception
        Throw ex
    Finally
        conn.Close()
    End Try
End Sub
如何传递连接字符串可以处理的多个请求

请帮忙


谢谢大家!

您可以在打开连接之前检查连接是否已打开,如下所示

if(con.State == ConnectionState.Closed)
{
   conn.Open()
)

我在这方面找到了解决办法。如果连接打开,我添加了ad.sleep

代码如下:

Public Sub populateGrid(ByVal sql As String, ByVal grd As GridView)
        Try

            cmd = New SqlCommand(sql)
            da = New SqlDataAdapter(sql, conn)
            If conn.State = ConnectionState.Open Then
                System.Threading.Thread.Sleep(3000)
            End If
            conn.Open()
            ds = New DataSet
            da.Fill(ds)
            grd.DataSource = ds
            grd.DataBind()
            conn.Close()
        Catch ex As Exception
            Throw ex
        Finally
            conn.Close()
        End Try
    End Sub

我添加了3秒钟,以便第一个进程可以继续,当它完成时,另一个进程将继续

为什么要在异常块和最终代码块中关闭连接?只有一次接近就足够了,这是我的错误。但在那个try-catch中,它仍然没有关闭最后部分的连接。错误仍然是连接未关闭连接的当前状态为打开这是否回答了您的问题?我认为这不是问题所在,通过异常,他似乎正在关闭连接,但连接没有关闭。这能处理来自不同用户的多个请求吗?@JamshaidKamran如果连接已经打开,而您尝试打开,则会发生此类错误。你可以检查这个@JamshaidKamran是的就是它。我测试了这个并打开了2个浏览器。同时单击提交按钮。这就是错误显示的时间。但是如果我点击提交按钮并延迟另一个。过程继续进行。我唯一的问题是处理多个提交请求。我同意你的看法,Suraj Kumar,检查连接状态将是一个好主意,但我怀疑这对他长远来说会有帮助,因为他在某些地方没有正确关闭连接,这可能是一个头痛的问题。这不是一个好的解决方案。目前还不清楚为什么多个用户不能在没有任何问题的情况下访问该网站。代码的每个用户、请求和运行在很大程度上都是无状态的。此处不显示conn对象的设置位置和方式。我假设conn对象读取连接字符串,创建conn对象,然后返回连接对象。我不明白为什么这会导致1到20个用户出现问题。每个加载网页的用户都将在自己的上下文中使用+调用该代码。IIS应该为您执行此任务。我将检查sql server表-确保其上有正确的索引,以减少全表扫描锁定。不管是10人还是20人加载并运行该网页。这里还有一些错误,实际代码的延迟是一个巨大的创可贴解决方案,而不是真正的修复。您拥有的conn对象每次都是为每个请求从头创建的?某些内容正在持久化conn对象,而它本不应该持久化。因此,请确保此处不存在静态声明等。