【发布时间】:2012-11-01 04:55:03
【问题描述】:
我有一个带有 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();
【问题讨论】:
-
您使用的是哪种绑定方式。 basicHttpBinding 不支持
PerSession行为。此外,WCF 已经通过管理会话来照顾自己。 -
确实,我用
basicHttpBinding。 -
最简单的解决方案是将绑定更改为 wsHttpbinding。我不在家,但你可以在 wcf 中找到大量用于绑定的资源
-
请发布您的 cmets 作为答案,我会接受它。我不知道 basicHttpBinding 不支持 PerSession。