gpt4 book ai didi

c# - 对页面(与数据库交互)的多个无 session 请求导致 HTTP 错误 500

转载 作者:太空狗 更新时间:2023-10-30 01:08:31 34 4
gpt4 key购买 nike

我有一个与 SQL Server 数据库交互的 asp.net 网页,抓取一些数据然后返回一个 XML 响应(我使用 xml_curl 将其输入 Freeswitch)。

因为 Freeswitch(从现在开始是 FS)不存储 cookie,所以每个请求都会创建一个新的 session 。

当请求数量过多(大约 97 到 100)时,SqlConnection.Open() 方法会从 SQL Server 实例超时,然后导致 HTTP 错误 500。

为了检验我的假设,我使用 PHP 和 cURL 创建了一个小脚本,它向我的 asp.net 页面发出重复请求。如果我在 PHP 脚本中存储 cookie(以及 session ),我可以在将近 314 秒内发出 10000 个成功请求。

但如果没有 session ,我会卡在大约 97~100 个请求,然后出现 HTTP 错误 500。

有没有办法解决这个问题?

==编辑==
这是我与数据库交互的方式:

String connectionString = WebConfigurationManager.ConnectionStrings["SqlServerConnection"].ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = "Select * from dbo.Template where Name = '" + name + "'";

Template template = new Template();

connection.Open();

SqlDataReader reader = command.ExecuteReader();


if (reader.HasRows)
{
reader.Read();
template.Name = reader["Name"].ToString();
template.XMLContent = reader["XMLContent"].ToString();
}
else
{
template.Name = "";
template.XMLContent = "";
}

reader.Close();
connection.Close();

return template;

模板表有这些字段:

ID => int, identity, primary key
Name => nvarchar(255), unique
XMLContent => ntext

最佳答案

看来您正在使用连接池。默认情况下,这些池最多有 100 个连接到您的 SQL 服务器,并对任何额外的连接进行排队。队列有超时时间(默认 15 秒),如果您希望将请求排队更长的时间,可以延长该超时时间。这意味着您可能会在服务器上备份。如果您的 SQL 服务器可以处理,您还可以增加池的最大大小。

这是增加连接设置的方法 by adding these parameters:

  • 超时=60
  • 最大池大小=150
  • 等等等等

关于c# - 对页面(与数据库交互)的多个无 session 请求导致 HTTP 错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161737/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com