我有一个带有 ConcurrencyMode = ConcurrencyMode.Multiple
选项的 WCF 服务。考虑到服务请求是并发处理的事实,我可以安全地读取传入请求 HTTP header 并设置传出响应吗?我怀疑是因为 WebOperationContext.Current
是一个全局状态。它会检查当前线程吗?
最佳答案
ConcurrencyMode.Multiple
仅当您具有允许共享服务实例的实例化时才有意义。在 REST 服务的情况下,您很可能没有这样的实例化(除非您使用的是单例服务)并且您不应该有这样的实例化(因为 REST 服务不维护状态 - 所有状态都在请求中传输)。
REST 服务使用每个请求实例化,每个请求都由一个新线程(来自线程池)和服务类的新实例自动提供服务。您根本不需要此设置。
WebOperationContext.Current
从上下文中的私有(private)线程静态变量中检索当前上下文,因此它不会在线程之间共享。
关于c# - ConcurrencyMode.Multiple 和 WebOperationContext.Current 静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531753/