何时应在 WCF 服务中使用 OperationContextScope?

Posted

技术标签:

【中文标题】何时应在 WCF 服务中使用 OperationContextScope?【英文标题】:When should I use OperationContextScope inside of a WCF service? 【发布时间】:2010-03-18 14:40:19 【问题描述】:

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

using (new OperationContextScope((IContextChannel)_service))
     _service.Send(message);

所以我的问题是:什么时候创建这个新的OperationContextScope 合适,为什么?

谢谢!

【问题讨论】:

【参考方案1】:

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

当您建立OperationContextScope 后,您可以:

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

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

【讨论】:

明白了。因此,任何时候我想对会话信息、安全性等进行更精细的控制。我应该建立一个单独的OperationContextScope。另一个服务是基于会话的,是的。

以上是关于何时应在 WCF 服务中使用 OperationContextScope?的主要内容,如果未能解决你的问题,请参考以下文章

使用 HandleError 或 ProvideFault 中的 IErrorHandler 在 WCF 中记录异常?

WCF 何时使用 app.config 或 web.config?

何时在服务参考上使用 WCF ChannelFactory [重复]

何时使用 WCF/REST

何时使用 WCF REST 和 WEB API

WCF 如何根据请求决定何时返回 SOAP 或 JSON?