何时应在 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?