首页 > 解决方案 > 使用 texbox 控件插入数字时 ASP.NET 挂起

问题描述

我正在使用带有五个文本框的 asp.net 4.5、C# 和 SQL Express。传递的值是 0 到 99 之间的数字。使用 ExecuteNonQuery 插入数字时,系统会挂起 30 秒或更长时间。

在 VS 调试期间,我验证了数据实际上已写入数据库,但是 ExecuteNonQuery 从未完成。

我尝试了几种方法,包括具有相同结果的转换(TryParse 和 Convert )。我还创建了一个只有五个文本框的简单测试页面,但显示了同样的问题。此问题因硬编码和存储过程而失败。使用 SQLDatasource 控件有效,但更喜欢使用 C# 进行编码。这些字段仅用于数字,将在报告期间进行计算。注意:我假设值需要从字符串转换为 INT。

表结构:

          [StatID] [int] IDENTITY(1,1) NOT NULL,
      [Made2PT] [int] NULL, [Missed2PT] [int] NULL,

存储过程:

@Made2Pt Int, @Missed2pt Int        
          AS
          BEGIN
      INSERT INTO tblStatsV2(Made2Pt,Missed2pt)     
      VALUES (@Made2Pt,@Missed2pt)

示例后面的 C# 代码,带有两个文本框的部分测试页面

sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@Made2Pt", txtMade2PT.Text == "" ? 0 : 
                                          Convert.ToInt32(txtMade2PT.Text));
sqlCmd.Parameters.AddWithValue("@Missed2pt",txtMade2PT.Text == "" ? 0 : 
                                          Convert.ToInt32(txtMissed2PT.Text));`

来自其他页面的部分示例代码:

 cmd.CommandType = CommandType.StoredProcedure;
 if (int.TryParse(txt2ptMade.Text, out made2PT))
 {
          cmd.Parameters.Add("@Made2Pt", SqlDbType.Int).Value = made2PT;
 }

我希望该条目能在不到一秒的时间内返回,因为我的其他页面有快速响应。

标签: c#sql-servertextboxsql-insert

解决方案


我没有做的是在不同的浏览器(Edge、Chrome、Opera ...)上测试我的问题。我确实通过添加局部变量来修复存储过程,但这并没有消除问题。我发现这个问题只在 Microsoft Edge 上失败。在扫描 Microsoft 的支持后,一个修复方法是删除一个 KB 补丁。每个浏览器处理数据的方式不同,因此您可以预期在性能问题上会产生不同的结果。希望这可以帮助..


推荐阅读