我主要使用IOperationInvoker
来扩展我的服务的WCF管道以实现我自己的功能。
我目前正在使用System.Web.HttpContext.Current.Items
存储一些我希望在请求的整个生命周期内保持并可用的变量(pre方法调用,在webserice方法,post方法调用期间)。
这在使用HTTP
绑定时效果很好,但是,我现在需要启用TCP
和NamedPipes
绑定System.Web.HttpContext.Current.Items
包显然不可用
是否有更好的地方存储我只希望在当前请求范围内的变量?
由于 大卫
答案 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。