使用Autofac解决对数据模型的依赖性

时间:2010-06-19 07:23:03

标签: wcf wcf-data-services autofac

我在创建数据服务时遇到了问题,并使用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范围内注册。我想出了两个可能的解决方案 -

  1. 更改提供者的范围(不可能,因为必须重新构建几乎整个应用程序)
  2. 在请求范围内注册服务和模型(不知道这是否可行,如果可能,请更正)
  3. 任何意见/建议表示赞赏。感谢。

1 个答案:

答案 0 :(得分:1)

我猜您的语句“在请求范围中注册”是指您通过ContainerProvider配置的ASP.NET“请求”范围? (如果没有请澄清。)

请求生存期仅由ASP.NET请求看到,而不是WCF请求 - WCF使用不同的管道。

可能有一种方法可以达到你想要的效果,所以请发布MyProvider注册的一些细节。

确保您的每个请求组件不依赖于任何ASP.NET“Http”类型,这些类型在WCF请求期间无法使用,无论是否使用了Autofac。

希望这有帮助!

尼克