0

我在创建数据服务并使用 Autofac WCF 集成来解决对我的数据模型的依赖时遇到了问题。注册形式如下:

    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. 在请求范围内注册服务和模型(不知道这是否可能,如果完全正确,是否正确)

任何意见/建议表示赞赏。谢谢。

4

1 回答 1

1

我猜你所说的“在请求范围内注册”是指通过配置的 ASP.NET“请求”范围ContainerProvider?(如果不是,请澄清。)

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

可能有一种方法可以实现您想要的,因此请发布一些MyProvider注册细节。

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

希望这可以帮助!

缺口

于 2010-06-19T22:27:58.867 回答