快速页面刷新导致服务器崩溃一段时间

Posted

技术标签:

【中文标题】快速页面刷新导致服务器崩溃一段时间【英文标题】:Fast Page Refresh Cause Server To Crash For A While 【发布时间】:2021-08-04 18:41:03 【问题描述】:

我正在使用带有 MSSQL 数据库的 reactjs 和 ASP.NET WEB API。 问题是,我想在使用 useEffect 加载主页时获取一些数据。

在我的情况下,它的 6 个一个接一个地获取。 当我运行该页面时,一切正常。我可以刷新并再次获得结果,但是有一个错误,当我尝试刷新时,比如说 10 次,真的很快就会向 F5 按钮发送垃圾邮件。

我在 chrome 控制台上从服务器得到的结果是 500 Internal Error,在 Postman 上的错误是必须关闭连接。

我只需等待大约 30 秒,然后再次刷新,一切正常。 我检查了 Web API 中的所有功能,最终连接关闭。

只有当我刷新垃圾邮件时才会发生这种情况。我尝试使用手机刷新使服务器崩溃,但我做不到 - 速度不够快。

【问题讨论】:

【参考方案1】:

我修好了! 我仍然会感谢有人解释为什么会发生这种情况。 谢谢。

//Code That Didn't Work
            try
            
                string ProcedureName = "GetUserById";
                SqlCommand command = new SqlCommand(ProcedureName, connection);
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@UserID", UserID);
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                User user = new User();
                while (reader.Read())
                
                    user.UserID = int.Parse(reader["UserID"].ToString());
                    user.FirstName = reader["FirstName"].ToString();
                    user.LastName = reader["LastName"].ToString();
                    user.Username = reader["Username"].ToString();
                    user.Email = reader["Email"].ToString();
                
                connection.Close();
                if (UserID != user.UserID)
                    throw new Exception();
                return user;
            
            catch (Exception ex)
            
                if (connection.State == ConnectionState.Open)
                    connection.Close();
                throw ex;
            

//The Code That Does Work
try
            
                using (SqlConnection con = new SqlConnection(connectionString))
                
                    string ProcedureName = "GetUserById";
                    SqlCommand command = new SqlCommand(ProcedureName, con);
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddWithValue("@UserID", UserID);
                    command.Connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    User user = new User();
                    while (reader.Read())
                    
                        user.UserID = int.Parse(reader["UserID"].ToString());
                        user.FirstName = reader["FirstName"].ToString();
                        user.LastName = reader["LastName"].ToString();
                        user.Username = reader["Username"].ToString();
                        user.Email = reader["Email"].ToString();
                    
                    if (UserID != user.UserID)
                        throw new Exception();
                    return user;
                
            
            catch (Exception ex)
            
                throw new Exception(ex.Message);
            

【讨论】:

以上是关于快速页面刷新导致服务器崩溃一段时间的主要内容,如果未能解决你的问题,请参考以下文章

将标头发送到客户端后无法设置标头/服务器在页面刷新时崩溃

如何从服务器端 Blazor 应用程序中的 Blazor 组件调用 razor 页面而不导致页面刷新

如果一段时间未收到 websocket,则刷新页面

Angular 2:如何在一段时间后自动刷新整个页面

Vuex 刷新页面后数据就消失了,怎么保存数据持久化?

解决iframe缓存机制导致页面不清除缓存不刷新页面的bug