【问题标题】:c# and HTTP protocolsc# 和 HTTP 协议
【发布时间】:2011-11-23 09:06:16
【问题描述】:

我正在开发 c# 应用程序,在其中发送和获取我们使用 HTTP 协议的请求。 c# 应用程序作为服务器运行,它是一个控制台应用程序,并且从使用 flex 开发的前端完成的数据操作(CRUD)。 另一个基于 Windows 的 c# 应用程序充当客户端(站),从数据库接收数据。 为此,来自站的请求以 http 请求的形式发送到服务器,服务器将数据连同数据一起返回到站,并将数据存储在站所在的本地数据库中。 现在我的问题是,如果两个站点在同一台服务器上运行并请求不同的数据库,有时数据会相互不匹配。 例如,如果服务器包含两个数据库,例如 db1 和 db2。而 station1 想要来自 db1 的数据,而 station2 想要来自 db2 的数据。有时 Station1 获取 db2 数据,而 station2 获取 db1 数据。 怎么可能。请在下面找到一段代码。

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());
}

}

请让我知道可能性。 谢谢你。 问候 桑吉塔

【问题讨论】:

  • 您显示的代码似乎与您的问题无关。要回答您的问题,您必须显示更多代码或描述您的服务器如何工作以及客户端如何连接/选择正确的服务器等。
  • 同意 Jan 的观点。但是,在我看来,这听起来像是您如何管理请求状态的问题;例如,它可能是一个线程错误,其中两个并行请求正在改变相同的上下文字段(例如记录它正在谈论的数据库的字段)。这里一个明显的错误是静态字段,但我们需要查看处理 DB 选择的服务器端代码。
  • 在您的示例中,station1 是否总是需要来自 DB1 的数据,而 station2 是否总是需要来自 DB2 的数据?如果是这样,您可以使用一些映射(配置文件中的帮助)来说明工作站应该获取数据的数据库。

标签: c#


【解决方案1】:

问题显然与数据库连接字符串有关。您可以将连接字符串写入日志或调试视图

【讨论】: