【发布时间】:2019-12-04 00:38:03
【问题描述】:
当客户端执行一个简单的选择查询时,我试图了解后台发生了什么。
我正在使用 C# Asp.Net Webforms,并使用 WireShark 检查了进程。
public DBC(string procedureName, params object[] procParams)
{
strError = null;
using (MySqlConnection connection = new MySqlConnection(GetConnectionString()))
{
connection.Close();
try
{
connection.Open();
MySqlCommand cmd = new MySqlCommand(procedureName, connection);
cmd.CommandType = CommandType.StoredProcedure;
//if we use params for stored procedure
if (procParams != null)
{
int i = 1;
foreach (object paramValue in procParams)
{
cmd.Parameters.Add(new MySqlParameter("@param_" + i, paramValue.ToString()));
i++;
}
}
if (procedureName.Contains("get"))
{
dtLoaded = new DataTable();
dtLoaded.Load(cmd.ExecuteReader());
}
else
{
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
strError = ErrorHandler.ErrorToMessage(ex);
}
finally
{
connection.Close();
connection.Dispose();
}
}
}
这是一个简单的SELECT * FROM TABLE 查询,在try-catch 语句中。在 finally 状态下,连接被关闭并释放。
为什么会导致43进程?我不明白,为什么有这么多。有人可以解释我吗?
非常感谢!
【问题讨论】:
-
TCP 最大数据报大小约为 1500(此连接为 1514)字节,因此当服务器需要发送更多数据时,需要更多响应。决赛应该以 s 200 OK 状态结束。
-
你在做任何并行请求吗?看起来第二个请求是在第一个请求的 200 OK 之前发出的。
-
哦,我明白了,谢谢!我不认为,这个连接请求是唯一的。我在代码上方添加了单击按钮时调用的内容。第一张图片包括单击按钮时的过程。 (这是一种通用的数据库连接处理方法,适用于任何类型的过程)
-
多次按下按钮将创建多个并行请求,除非您添加锁以防止多个请求。
标签: c# mysql asp.net wireshark windows-server-2019