Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 何时应该在WCF服务内使用OperationContextScope?_C#_Service_Wcf - Fatal编程技术网

C# 何时应该在WCF服务内使用OperationContextScope?

C# 何时应该在WCF服务内使用OperationContextScope?,c#,service,wcf,C#,Service,Wcf,我目前正在开发一个WCF服务,该服务在一些操作中与另一个服务联系以提交信息。第二个服务的代理是通过强类型的ProxyFactory类生成的。我没有遇到过任何问题,但听说我在打电话时应该做如下操作: using (new OperationContextScope((IContextChannel)_service)) _service.Send(message); 所以我的问题是:什么时候创建这个新的OperationContextScope合适,为什么 谢谢 如果您正在使用回调,或

我目前正在开发一个WCF服务,该服务在一些操作中与另一个服务联系以提交信息。第二个服务的代理是通过强类型的
ProxyFactory
类生成的。我没有遇到过任何问题,但听说我在打电话时应该做如下操作:

using (new OperationContextScope((IContextChannel)_service))
     _service.Send(message);
所以我的问题是:什么时候创建这个新的
OperationContextScope
合适,为什么


谢谢

如果您正在使用回调,或者如果您想修改消息或标题,则需要使用
OperationContextScope
。调用另一个服务时,您的服务可能需要修改传出标头

当您建立
OperationContextScope
时,您可以:

  • 访问和修改传入和传出邮件标题及其他属性
  • 访问运行时,包括dispatchers、主机、通道和扩展
  • 访问其他类型的上下文,例如安全上下文、实例上下文和请求上下文
  • 访问与
    操作上下文
    对象关联的频道,或(如果频道实现了
    System.ServiceModel.Channels.ISession
    )关联频道的会话标识符

  • 您调用的另一个服务是基于会话的服务吗?如果可用,您可能需要查看其示例客户端代码或文档。

    Gotcha。因此,每当我想要对会话信息、安全性等进行更精细的控制时,我都应该建立一个单独的
    OperationContextScope
    。另一项服务是基于会话的,是的。