c# - WCF 中的调用上下文

标签 c# .net wcf multithreading

当请求到达 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/

相关文章:

c# - 从通过 C# Windows 窗体执行的 CMD 窗口复制文本

c# - 统一引擎 : Which component called a running script?

.net - 用于检查哪个机器人访问过的分析 API

jquery - 使用 JQuery 将对象传递给 WCF 服务

c# - 为 WCF REST 服务生成示例数据?

c# - 如果它们都使用 PascalCasing 命名,如何区分属性和常量?

java - 在 OOP 中使用太多单例和静态方法会有什么风险?

.net - 为什么.NET 4.0 在加载非托管 DLL 时会出现 "CRT not initialized"错误?

c# - 如果转换为 null,为什么 Convert.ToString(null) 会返回不同的值?

c# - 没有注释的 WCF 契约(Contract)