私は、クエリ文字列の形式でデータを受信し、必要に応じて分離し、このデータをデータベースに保存することを唯一の目的とする 1 つの Web ページを含む Asp.Net Web サイトを持っています。
このデータは、複数の車両追跡システムから取得されます。各車両は、データの文字列をクエリ文字列として 30 秒ごとに送信します。
Web ページにアクセスすると、ページの読み込み時にクエリ文字列を読み取り、データベースに挿入操作を行うように、Web ページにコードを記述しました。このようなもの-
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
string input = Request.QueryString["vinput"];
var m = Regex.Match(input, @"~(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@(.+)@");
if (m.Success)
{
string[] vals = new string[20];
int j = 1;
for (int i = 0; i < 20; i++)
{
vals[i] = m.Groups[j].Value;
j++;
}
cmd.CommandText = "insert into tracking (vehicle_no,hardware_id,lat,lng,speed,direction,an0,an1,an2,an3,di0,di1,di2,di3,do0,do1,do2,do3,tdate,ttime) values('" + vals[0] + "','" + vals[1] + "','" + vals[2] + "','" + vals[3] + "','" + vals[4] + "','" + vals[5] + "','" + vals[6] + "','" + vals[7] + "','" + vals[8] + "','" + vals[9] + "','" + vals[10] + "','" + vals[11] + "','" + vals[12] + "','" + vals[13] + "','" + vals[14] + "','" + vals[15] + "','" + vals[16] + "','" + vals[17] + "','" + vals[18] + "','" + vals[19] + "')";
cmd.Connection = con;
cmd.ExecuteNonQuery();
}
}
車両追跡システムの代わりにこのサイトをテストするためのシミュレーター アプリを作成しました。このサイトは、1 つから 3 つのシミュレーター インスタンスからのデータがある場合は正常に動作しますが、3 つ以上のシミュレーター インスタンスが同時にデータを送信すると (およそ)、データをデータベースに保存できません。
たとえば、5 つのレコードをシミュレーターから一度に 1 つずつ送信し、そのような 6 つのシミュレーター インスタンスがページにデータを送信しています。データベースの最後に、30 レコードではなく 15 レコードしか挿入されていません。ところで、この Web サイトはIIS 5.1で実行されます。
この問題にどう対処すればよいですか? 提案してください。
更新: 最後に問題が見つかりました。多くのグーグル検索の後、このリンクとこれが見つかりました。Windows XP IIS では、ベーシック/スターターのリクエスト制限が 3 のみであるため、サーバーに依存します。