【问题标题】:how to access web service by multiple users simultaneously using C#?如何使用 C# 同时访问多个用户的 Web 服务?
【发布时间】:2016-09-27 10:14:09
【问题描述】:

我有一个使用 C# 创建的 Web 服务。

在此 Web 服务中,一个 config.inc 文件存储所有输入数据并根据新请求进行覆盖。根据输入,此 Web 服务在浏览器上提供 XML 输出。

我需要让多个用户同时访问我的网络服务。用户应根据 Web 服务的输入参数获取 XML 输出。 XML 输出不应在用户之间发生冲突。

完成此任务的任何准则。

编辑

以下是我们的网络服务实施中的问题,这就是我发布此问题的原因。

我们创建了部署在 IIS 服务器上的 Web 服务。在部署目录中有两个文件 config.inc 和 tempfile.xml。对于每个请求,config.inc 文件被覆盖以存储输入参数,并且根据输入参数,现有 tempfile.xml 文件被覆盖。我们使用 C# 在浏览器上显示它。

我们在实现中面临的问题是,当两个用户同时调用 Web 服务时,第二个用户所需的输出被发送给第一个用户,而第二个用户收到错误消息,我不知道如何解决这个问题。

如果有任何方法可以实现此网络服务以供多用户访问,请告诉我。

【问题讨论】:

  • 这个问题没有任何意义。根据定义,Web 服务是多用户的。每个请求都由一个单独的线程处理。您为什么要询问多个用户以及配置文件与此有什么关系?
  • 通过 Web 服务,我们连接到 Doors(IBM 需求管理工具),生成 Doors 模块(文档)的 XML 文件,并使用 C# 在浏览器上显示该 XML 文件。我们没有使用任何外部数据库,对于每个请求,都有两个文件被更新,即 config.inc 和 XML 文件。如果我们同时使用两个具有不同输入参数的用户运行我们的 Web 服务,则一个用户在浏览器上得到 XML 输出,而另一个用户得到错误消息。每个请求的输入参数都存储在 config.inc 文件中。
  • 我们希望处理多个用户,这样每个用户都可以根据他对 Web 服务的输入参数获得 XML 输出。
  • 这与网络服务无关。如果您运行两个命令行脚本来请求具有相同输出文件的相同数据,则会遇到同样的问题。别。不可能给出具体的答案,因为这 100% 是关于 DOORS,但您应该简单地将数据导出到不同的文件。只需传递一个随机名称作为输出文件名。

标签: c# xml web-services multiple-instances


【解决方案1】:

实现这一点的唯一要求是避免使用任何在 Web 服务的方法中改变其值的静态变量。

除此之外,Web 服务默认是多用户的。

【讨论】:

  • 实际上我们并没有在网络服务中使用任何外部数据库。我们正在使用 config.inc 文件来存储输入参数。
  • 换一种说法,必须积极尝试通过将来自多个请求的数据存储在静态变量中来制造问题。
  • @PanagiotisKanavos:我采用了这种方法,但没有奏效。
  • 我面临的问题是:当用户指定输入参数时,XML 根据给定的输入生成。并且输入参数存储到(temp.inc)文件中并根据新请求覆盖。但是,当多个请求一次尝试访问 Web 服务时,它会发生冲突,只有第一个请求会获得 XML 输出,其余的都会出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
相关资源
最近更新 更多