繁体   English   中英

ASP.NET 页面停止处理

[英]ASP.NET page stops processing

我很难解决似乎是连接问题的问题。 我已经搜索了 web,听起来这不是通往 go 的方法,但如果有人有任何想法或想法,那就太好了。
我有一种预感,这是因为这 4 个页面使用的是相同的.cs 代码文件,并且所有逻辑都在 OnLoad() 发生,所以它正在启动另一个? 这些报告仅用于显示,无需用户输入。

如果需要更多信息,请告诉我,谢谢!

问题:

  • 页面本身可以正常加载,但如果运行了多个选项卡并且一个仍在处理中,它会停止此操作,然后显示丢失的数据和格式。 有时可以通过快速按两次刷新 (F5) 来模仿。

正确的

如果运行另一个网页,它会停止处理并看起来像这样

环境:

  • IIS 在服务器上运行
  • DB2 数据库 (IBM)

Web 报告:

  • 4 asp.net 页面链接到相同的 Default.CS 代码文件(例如 /dash/steel.aspx、/dash/steelnums.aspx)
  • 在页面加载 > 使用 StreamReader 读取 CSV 文件 > 运行 SQL 查询 > 将信息格式化/显示到数据网格视图中

连接示例:

        iDB2Connection BlueDB2Connection = new iDB2Connection(strConnectionString);
        iDB2DataAdapter BlueDB2PartsDataAdapter = new iDB2DataAdapter();
        iDB2Command SqlCmd = BlueDB2Connection.CreateCommand();
        SqlCmd.CommandTimeout = 1000000000;

        // select proper query based on page being loaded
        if (curPage.Contains("amewood"))
        {
            SqlCmd.CommandText = sqlMainDataWood();
        }
        else if (curPage.Contains("amesteel"))
        {
            SqlCmd.CommandText = sqlMainDataSteel();
        }

        BlueDB2PartsDataAdapter.SelectCommand = SqlCmd;            

        try
        {
            BlueDB2PartsDataAdapter.Fill(dsParts);               
        }
        catch (SqlException sqlEx)
        {
            DisplayError.Text = "Error:" + sqlEx.Message;
        } 

读取 CSV function:

           using (StreamReader reader = new StreamReader(basePath + filePath + "daysStart.csv"))
            {
                var headerLine = reader.ReadLine();
                var line = reader.ReadToEnd();
                var values = line.Split(',');
                DateTime dt;
                DateTime today = DateTime.ParseExact(DateTime.Now.ToString("MMddyyyy"), "MMddyyyy", CultureInfo.InvariantCulture);
                int i = 0;
                if (values.Length != 0)
                {
                    foreach (string item in values)
                    {
                        if (item != "")
                        {
                            dt = DateTime.ParseExact(item, "MMddyyyy", CultureInfo.InvariantCulture);
                            dateData.startDate = dt;
                        }
                        else
                        {
                            dateData.startDate = today;
                        }
                        i++;
                    }
                }
                else
                {
                    dateData.startDate = today;
                }
            }

故障排除:

  • 尝试多线程
  • 在代码之前尝试延迟
  • 测试了 CSV 没有导致问题

不关闭数据库连接(处理它)将是罪魁祸首。 运行每个命令或查询后,您必须处理连接(或在事件处理函数结束时)。 As @ Dai suggested if you're not limited to using DB2 and Web Forms you should use newer technologies such as ASP.net MVC and EntityFramework or other ORMs.

更新:阅读您的链接后:

这种类型的任何公共 static(在 Visual Basic 中共享)成员对于多线程操作都是安全的。 不保证任何实例成员都是线程安全的。

这可能是因为不共享 DB2DataAdapter object 的同一个实例。 在页面之间与static修饰符共享它,看看它是否有帮助。

抱歉耽搁了,我没有太多时间来处理这个问题。 这个问题原来与被覆盖的 static 变量有关...... face palm 我敢肯定,如果我发布了所有代码,您会立即注意到它。 感谢您的时间和精力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM