C# WCF配置服务器以记住数据
我目前在WCF中有一个服务,它处理客户机发出的请求。但是,它会缓存客户端发送给它的一些数据。然后对数据进行计算 在任何时候,客户机都应该能够检索一些数据。这由用户自行决定(单击按钮时,将发送一个AJAX查询以获取部分数据) 我遇到的问题是,一旦另一个客户端连接并开始发送请求,原始客户端发送的数据现在就被扭曲了 我想知道如何解决这个问题。我尝试使用会话,因为我正在寻找某种方法,可以为每个想要连接到它的客户机实例化我的“服务器对象”。还是不走运 这个问题与此有关:C# WCF配置服务器以记住数据,c#,asp.net,wcf,service,asmx,C#,Asp.net,Wcf,Service,Asmx,我目前在WCF中有一个服务,它处理客户机发出的请求。但是,它会缓存客户端发送给它的一些数据。然后对数据进行计算 在任何时候,客户机都应该能够检索一些数据。这由用户自行决定(单击按钮时,将发送一个AJAX查询以获取部分数据) 我遇到的问题是,一旦另一个客户端连接并开始发送请求,原始客户端发送的数据现在就被扭曲了 我想知道如何解决这个问题。我尝试使用会话,因为我正在寻找某种方法,可以为每个想要连接到它的客户机实例化我的“服务器对象”。还是不走运 这个问题与此有关: 听起来您可能正在寻找WCF持久服务
听起来您可能正在寻找WCF持久服务()。持久服务可以在对服务的调用之间保持状态 Juval Lowy的编程WCF Services()中的第4章还提供了有关持久服务以及每会话服务的信息,这些信息可能也会有所帮助
不过,一般来说,将WCF服务设置为无状态被认为是一种良好的做法,即在调用之间不保留任何状态。持久服务通过将数据持久化来实现这一点,例如在调用之间将数据持久化到数据库中,而不是将其实际保存在内存中(如果您同时拥有数千个服务使用者,这可能是一件坏事)。您的服务在实例/并发方面是如何配置的?听起来您可能正在使用单例服务实例,并将数据存储在服务实例中 如果是这样的话,这就解释了您的问题——该状态将被调用状态更改操作的下一个客户端覆盖 由于您的客户端是web浏览器,您可能正在使用不支持WCF会话的webHttpBinding 添加自己的会话概念的一种简单方法是将会话ID传递给操作,然后可以使用该ID查找请求的相关状态 如果您想变得更复杂一点,可以研究从WCF请求中挖掘cookie信息,并将其用于会话
最复杂的解决方案是使用支持WCF会话概念(构建在cookie或会话参数之上)的自定义WCF绑定。除非你能用谷歌搜索一个现成的解决方案,否则可能不值得付出努力。请描述一下数据是如何被扭曲的。也许它不是被扭曲的,它只是不应该是这样。IE:我的客户机将服务器持有的变量设置为5,并期望稍后在某个点它仍然是5,但同时另一个客户机连接并发送了将该变量设置为6的请求。现在,当第一个客户需要它时,它将是6,而不是它所期望的5。本质上,我正在寻找一种方法,为每个连接到它的客户端创建一个本地服务器类,并在用户离开页面后处理这些本地类。