【问题标题】:Asp.Net application randomly locks up with multiple usersAsp.Net 应用程序随机锁定多个用户
【发布时间】:2014-05-15 20:19:16
【问题描述】:

技术 - Asp.Net 4.5,SqlServer 2012

我有一个(母版页 Web 应用程序)似乎随机锁定执行 sql 查询、插入或更新的函数。查询用于填充 GridView、ListView、DataTable 以用于任何页面碰巧被请求或回发。

如果只有 一个 用户处于启用状态,则不会出现锁定或错误。如果 多个 用户打开,则它会随机锁定错误。错误堆栈跟踪指向与数据库交互的函数。 stacktrace 的最后一行是“ProcessRequestMain”。我似乎还无法弄清楚这一点。有没有其他人遇到过这个问题?

错误信息详情:

Object reference not set to an instance of an object.

错误堆栈跟踪:

at MudderTrucks.Items.LoadItems()
at MudderTrucks.Items.Page_Load(Oject.sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

【问题讨论】:

  • 您没有提供足够的信息来诊断问题。需要看相关代码。
  • 详细定义“锁定”。
  • 等待轮 (modalpopupextender) 会滚动几分钟,然后将用户带到 CustomError 页面。
  • 抛出的异常是什么?能够给出合理的答案非常重要。
  • 但它是随机发生的。我对一些用户进行了测试,如果我们同时发出请求,问题就会发生,否则一切似乎都正常。

标签: c# asp.net sql-server visual-studio


【解决方案1】:

我会检查您是否有未提交的事务,因为这会导致表锁定。 还要确保数据库连接正在关闭。

【讨论】:

  • 你可能是对的。这似乎是一个交易问题。我会检查一下。
【解决方案2】:

问题: 模块中的连接变量。我忽略了这一点。

Dim MyConnection As New SqlClient.SqlConnection( _
        ConfigurationManager.ConnectionStrings("MyConnection").ConnectionString)

答案:移除模块级变量并将其作为参数添加到您的函数中

Public Function GetData2(ByVal Sql As String, _
         MyConnection As SqlClient.SqlConnection) As DataTable

    '...code...'

End Function

注意: 作为在模块中使用公共函数的更好替代方法,我创建了一个 PageBase 类并在需要这些函数的页面上继承它。我在类的顶部添加了连接变量,因为它只会将它暴露给继承它的页面。或者……你可以在后面的页面代码中创建连接,并将其传递给函数。

后面的页面代码

Public Class MyPage
    Inherits PageBase

End Class

PageBase 类

Public Class PageBase
    Inherits System.Web.UI.Page

    Public MyConnection As New SqlClient.SqlConnection( _
        ConfigurationManager.ConnectionStrings("MyConnection").ConnectionString)

    Public Function GetData2(ByVal Sql As String) As DataTable

        '...code...'

    End Function

End Class

结论:我尝试了这两种方法,他们修复了发布的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多