2012-03-13 12 views
1

私のWebページでレコードを追加すると、いくつかのレコードが複数回追加されます。その後、同じDBコールが複数回送信されることがわかりました(プロファイリング時)。そのSPだけでなく、他のいくつかのSPも。しかし、彼らはデータを返すだけです。だから彼らは何の問題も引き起こしていません。しかし、この動作はプロダクションサイトにのみ残っています。開発現場ではありません。したがって、SPコールがどこから来ているかを追跡することは本当に困難です。私はループやものをチェックしましたが、何もありません。ここで同じストアドプロシージャ呼び出しが何度もトリガされるのはなぜですか?

は、JavaScriptのファイルにHTTPリクエストである:ここで

var strParams = "?"; 
strParams += "Process="   + "assignQuestion";        
... 
strParams += "&measure="   + measure; 

xmlAssignQuestion = new ActiveXObject("Microsoft.XMLHTTP"); 
xmlAssignQuestion .onreadystatechange = assignQuestionBack; 
xmlAssignQuestion .open("POST", "AssignQuestion.reliability" + strParams, false); 
xmlAssignQuestion .send(); 

HTTPハンドラは、事前に

if (process.Equals("assignQuestion")) 
{ 
    int measure = int.Parse(context.Request.QueryString["measure"]); 

    string ret = DBClasses.AssignToGroup.storeQuestionp(measure); 

    if (long.Parse(ret) == -1) 
     context.Response.Write("f"); 
    else context.Response.Write(ret); 

    context.Response.Flush(); 
    context.Response.End(); 
} 

感謝です!

+0

プロファイラのダンプ画面を投稿できますか? – Raymund

+0

フィドラーを使用してデバッグし、ネットワークトラフィックを監視し、重複したhttp要求が送信されていないことを確認します。 – gilly3

+2

あなたのユーザーは[送信]ボタンを何回もクリックしていませんか?彼らはあなたはいつもそれを防ぐためにいくつかのJavaScriptコードを書くことができます。 –

答えて

0

生産データが破損しないように、重複が発生しないように、適切な列の組み合わせに一意制約を追加します。次回にクライアント操作で重複を挿入しようとすると、制約が追加されると、エラーが発生します。これにより、エラーが発生するシナリオを特定するのに役立ちます。

+0

私のケースでは、新しいレコードを追加するためにクエリが使用され、識別子がまだ生成されていないため、これは役に立ちません。したがって、既に追加されているかどうかを確認する方法はありません。 – user1265416

+0

お世話になりました! – user1265416

関連する問題