Устранение зависимости от модели данных с использованием Autofac - PullRequest
0 голосов
/ 19 июня 2010

Я столкнулся с проблемой при создании службы данных и использовании 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 зарегистрированы в области приложения.Я придумал два возможных решения -

  1. Изменить область действия провайдера (невозможно, поскольку придется переделывать почти все приложение)
  2. Зарегистрировать службу и модель в области запроса (Don 'не знаю, возможно ли это, и если вообще, исправьте)

Любые советы / предложения приветствуются.Благодаря.

1 Ответ

1 голос
/ 20 июня 2010

Я полагаю, под вашим утверждением "зарегистрированный в области запроса" вы имеете в виду область "запроса" ASP.NET, настроенную с помощью ContainerProvider? (Если нет, уточните.)

Срок действия запроса видят только запросы ASP.NET, а не запросы WCF - WCF использует другой конвейер.

Вероятно, есть способ добиться того, чего вы хотите, поэтому, пожалуйста, опубликуйте некоторые детали регистрации MyProvider.

Убедитесь, что компонент для каждого запроса не зависит от какого-либо типа ASP.NET «Http», который не будет доступен во время запроса WCF независимо от того, используется ли Autofac или нет.

Надеюсь, это поможет!

Ник

...