我有一个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();
答案 0 :(得分:1)
正如我们在评论期间发现的那样,您使用的是basicHttpBinding。 basicHttpBinding不支持ServiceBehavior.InstanceContextMode = InstanceContextMode.PerSession
会话行为。有关绑定的更多详细信息,请查看MSDN Documentation
我还想补充的是,如果您关闭代理并再次重新打开,WCF会自动跟踪其会话,您将获得相同的会话。 (如果你的绑定当然支持它)。只有当客户端关闭时,您的会话才会在WCF中自动终止。