1

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

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

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

1 回答 1

1

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

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

于 2012-10-31T20:55:03.003 回答