WCF请求范围变量

时间:2015-07-01 11:51:58

标签: .net wcf

我主要使用IOperationInvoker来扩展我的服务的WCF管道以实现我自己的功能。

我目前正在使用System.Web.HttpContext.Current.Items存储一些我希望在请求的整个生命周期内保持并可用的变量(pre方法调用,在webserice方法,post方法调用期间)。

这在使用HTTP绑定时效果很好,但是,我现在需要启用TCPNamedPipes绑定System.Web.HttpContext.Current.Items包显然不可用

是否有更好的地方存储我只希望在当前请求范围内的变量?

由于 大卫

2 个答案:

答案 0 :(得分:3)

我认为您需要与OperationContext而不是HttpContext相关联。类似问题的答案已经提交here

基本上你只需要实现IExtension并将其插入到WCF中。可以找到分步示例,例如here

答案 1 :(得分:0)

您可以将服务设置为持续的实例上下文模式。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
public class MyService : IMyService
{
    private string sessionVar;         // for each session
}

然后由客户端来保持会话活着。 在您的客户端中,您可以在类级别创建代理,只有在完成后才能关闭它,这样就可以使用sessionVar。