当请求到达 WCF 服务时使用 CallContext 是安全的,用一些调用特定的数据初始化它(例如在调用开始时使用钩子(Hook):Inspector/ContextBoundObject),然后在调用中重用它,并得到保证我访问的数据始终是相同的数据?
谢谢,帕维尔
最佳答案
如果您没有从检查员那里使用它,那么它应该是安全的,但是如果您没有使用远程处理或跨越 AppDomain 边界,那么使用线程静态字段可能更简单。放一个 ThreadStaticAttribute在静态字段上,它将是每个线程中的单独存储位置。
如果您尝试在 IDispatchMessageInspector
中设置值,例如,那么它将不起作用,因为它们将在与请求不同的线程中运行。看看OperationContext ,它将提供有关 WCF 请求的特定于调用的信息。您可以通过实现 IExtension<OperationContext>
向其添加可以存储自定义数据的扩展。并将它们添加到 Extensions 属性中。 Here is a blog post描述了如何将自定义数据添加到 OperationContext。
关于c# - WCF 中的调用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3116289/