我有一个带有ConcurrencyMode = ConcurrencyMode.Multiple选项的WCF服务。考虑到服务请求是并发处理的,我是否可以安全地读取传入请求的HTTP标头并设置传出响应的标头?我很怀疑,因为WebOperationContext.Current是一个全局状态。它会检查当前线程吗?

最佳答案

ConcurrencyMode.Multiple仅当您具有允许共享服务实例的实例化时才有意义。对于REST服务,您很可能没有这种实例化(除非您正在使用单例服务),并且您不应该具有这种实例化(因为REST服务无法保持状态-所有状态都在请求中传输)。

REST服务使用每个请求实例化,并且每个请求由一个新线程(来自线程池)和该服务类的新实例自动提供服务。您根本不需要此设置。

WebOperationContext.Current从上下文内部的私有线程静态变量中检索当前上下文,因此不会在线程之间共享它。

关于c# - ConcurrencyMode.Multiple和WebOperationContext.Current静态属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6531753/

10-09 07:08