我正在开发一个c#应用程序,其中服务器一次从许多客户端获取请求。每个客户端也从不同的数据库中获取数据。在这种情况下,有时会发生数据泄漏,这意味着客户端从不正确的数据库中获取数据。比方说,client1应该从db1获取数据,client2从db2获取数据。相反,他们从相反的数据库获取数据client1从db2获取,client2从db1获取。 我在下面添加了收集数据的代码。
public string List()
{
Response.ContentType = ContentType.Xml;
try
{
ThingzFilter filter = null;
Dictionary<string, string> parameters = new Dictionary<string, string>();
if (Id!="")
{
// get parameters from http request
foreach (HttpInputItem param in Request.Param)
parameters.Add(param.Name, param.Value);
setServerURLs();
//Request.Clear();
if (Request.QueryString["lang"].Value != null)
{
ThingzDB.TzThing.get_language = Request.QueryString["lang"].Value.ToString();
}
else
{
ThingzDB.TzThing.get_language = SessionDatabase.DefaultLanguage;
}
}
ThingzDatabase db = SessionDatabase;
langStr = db.Language;
// this is run if there was no ID supplied
// which means we want all items of all types
if (Id == "")
{
if (Request.AcceptTypes == null)
{
//TypeController.session_id = Request.QueryString["sessionid"].Value;
jobs.Add(Request.QueryString["sessionid"].Value);
if (nextJobPos > jobs.Count - 1)
return "";
else
{
TypeController.session_id = jobs[nextJobPos];
nextJobPos++;
langStr = SessionDatabase.Language;
}
filter = new AllThingzFilter(SessionDatabase, parameters, langStr);
TypeController.session_id = "";
filter.Execute();
}
在此服务器中是控制台应用程序,客户端是站点名称的窗口,表示提到数据库名称。 请给我一个解决方案来解决这个问题。
答案 0 :(得分:0)
如果没有准确地知道SessionDatabase
是如何定义的(从名称看来它似乎是一个会话变量),或者它的实现是否是一个执行某种复杂逻辑的属性,我猜你有两个问题:< / p>
db
和SessionDatabase
。对于后者,我会在代码顶部建议db = SessionDatabase
一次(确保SessionDatabase
对于该客户端是正确的,然后使用db
方法。