2011-11-23 105 views
0

我正在開發c#應用程序,發送和獲取請求我們使用HTTP協議。 c#應用程序作爲控制檯應用程序的服務器運行,並且使用flex開發的前端完成的數據操作(CRUD)。 另一個C#應用程序是一個基於Windows的客戶端(站),從數據庫接收數據。 對於這個來自站點的請求作爲http請求發送到服務器,並且服務器響應回到具有存在站點的本地數據庫中的數據和存儲數據的站點。 現在我的問題是,如果兩個站運行相同的服務器,並要求不同的數據庫,有時數據會彼此不匹配。 示例如果服務器包含兩個數據庫,說明db1和db2.And station1需要來自db2的db1和station2的數據。有時,Station1獲取db2數據,station2獲取db1數據。 怎麼可能。請在下面找到一段代碼。c#和HTTP協議

private void LogRequest(SiteSession siteSession) 
{ 
StringBuilder sb = new StringBuilder(); 
sb.AppendFormat("({0}) {1} {2}", 
Request.RemoteEndPoint.Address.ToString(), 
Request.Method.ToUpper(), 
Request.Uri.AbsoluteUri); 

if (siteSession != null) 
{ 
sb.AppendFormat("({0}/{1}/{2})", 
siteSession.sessionId, 
siteSession.site.Name, 
siteSession.user.UserName); 
} 
else 
{ 
sb.AppendFormat(" - not serviced, reason:no valid session"); 
} 

TouchServer.Log(Logger.MessageType.Trace, 1, sb.ToString()); 

if (TouchServer.showURLs) 
{ 
Console.WriteLine("{0}: {1}", DateTime.Now, sb.ToString()); 
} 

} 

請讓我知道可能性。 謝謝。 Registers sangita

+0

您顯示的代碼似乎與您的問題沒有關係。要回答你的問題,你將不得不顯示更多的代碼或描述你的服務器如何工作,以及客戶如何連接/選擇正確的服務器等。 – Jan

+1

同意Jan的觀點。但是,在我看來,您在管理請求狀態方面存在問題;例如,它可能是一個線程錯誤,其中兩個並行請求會突變相同的上下文字段(例如記錄它正在討論哪個數據庫的字段)。這裏顯而易見的錯誤是靜態字段,但我們需要查看處理DB選擇的服務器端代碼。 –

+0

在你的例子中,station1總是希望來自DB1的數據,而station2總是需要來自DB2的數據?如果是這樣,你可以使用一些映射(在配置文件中的幫助)來說明哪個數據庫站應該獲取數據。 – TeamWild

回答

-2

這個問題顯然與數據庫連接字符串有關。您可以編寫連接字符串來記錄或調試視圖