2012-03-13 79 views
1

在我的網頁中添加記錄時,會多次添加一些記錄。然後我發現相同的數據庫調用不止一次發送(分析時)。不僅僅是那個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

你可以發佈profiler dump screen嗎? – Raymund 2012-03-13 02:01:19

+0

使用fiddler進行調試來監控網絡流量,並確保沒有發送重複的http請求。 – gilly3 2012-03-13 02:36:13

+2

你確定你的用戶沒有多次點擊提交按鈕嗎?如果他們是你可以隨時寫一些JavaScript代碼來防止它。 – 2012-03-13 02:39:46

回答

0

爲了防止生產數據被破壞,我會添加一個唯一的約束到適當的列組合,以確保重複不會發生。在客戶端操作下次嘗試插入重複時添加約束時,它們將收到一個錯誤,這將有助於識別導致它發生的情況。

+0

沒有,這不會幫助,因爲在我的情況下,該查詢用於添加一個新的記錄和標識符尚未生成。所以我無法檢查它是否已經添加。 – user1265416 2012-03-14 06:02:39

+0

順便說一句,感謝您的時間! – user1265416 2012-03-14 06:02:59

相關問題