通过InstanceContextMode = PerSession将Autofac与WCF服务一起使用

时间:2012-10-30 22:27:03

标签: c# .net wcf autofac

我有一个ServiceBehavior.InstanceContextMode = InstanceContextMode.PerSession的WCF服务。

如何使用Autofac注册服务以获取每个新会话的新实例,但在会话中使用相同的实例? 我目前正在使用以下配置,它会导致PerCall

等行为
builder.Register(c => new ChannelFactory<IUserService>()).SingleInstance();
builder.Register(c => c.Resolve<ChannelFactory<IUserService>>().CreateChannel())
       .UseWcfSafeRelease();
builder.RegisterType<UserService>().AsImplementedInterfaces();

1 个答案:

答案 0 :(得分:1)

正如我们在评论期间发现的那样,您使用的是basicHttpBinding。 basicHttpBinding不支持ServiceBehavior.InstanceContextMode = InstanceContextMode.PerSession会话行为。有关绑定的更多详细信息,请查看MSDN Documentation

我还想补充的是,如果您关闭代理并再次重新打开,WCF会自动跟踪其会话,您将获得相同的会话。 (如果你的绑定当然支持它)。只有当客户端关闭时,您的会话才会在WCF中自动终止。