我在创建数据服务时遇到了问题,并使用Autofac WCF Integration解决了对数据模型的依赖性问题。注册形式如下:
builder.RegisterType<MyService>()
.InstancePerDependency();
builder.RegisterType<MyModel>()
.InstancePerLifetimeScope();
MyModel依赖于MyProvider
public MyModel (MyProvider provider)
{
_provider = provider;
}
出现问题是因为此提供程序已在请求范围内注册,原因与我的申请相关。
builder.RegisterType<MyProvider>()
.As<MyProvider>()
.InstancePerMatchingLifetimeScope(RequestContextTag);
很明显,在每个ASP.Net请求上创建并处理请求容器。
但是,MyModel和MyService在Application范围内注册。我想出了两个可能的解决方案 -
任何意见/建议表示赞赏。感谢。
答案 0 :(得分:1)
我猜您的语句“在请求范围中注册”是指您通过ContainerProvider
配置的ASP.NET“请求”范围? (如果没有请澄清。)
请求生存期仅由ASP.NET请求看到,而不是WCF请求 - WCF使用不同的管道。
可能有一种方法可以达到你想要的效果,所以请发布MyProvider
注册的一些细节。
确保您的每个请求组件不依赖于任何ASP.NET“Http”类型,这些类型在WCF请求期间无法使用,无论是否使用了Autofac。
希望这有帮助!
尼克