Ошибка Autofac - из области, в которой был запрошен экземпляр, не видна область с тегом, совпадающим с "AutofacWebRequest"

В одном из моих веб-приложений у меня есть веб-сервис, использующий Autofac, файл SVC выглядит следующим образом:

<%@ ServiceHost Language="C#" Debug="true" 
Service="MyApp.WebServices.Contracts.Interfaces.IMyWebService, MyApp.WebServices.Contracts" 
Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %>

Я регистрирую зависимости для своего приложения веб-службы следующим образом:

public class IocConfig
{        
    public static void RegisterDependencies()
    {
        var builder = new ContainerBuilder();            

        //web services
        builder.RegisterType<MyWebService>().As<IMyWebService>().InstancePerLifetimeScope();

        var container = builder.Build();

        AutofacHostFactory.Container = container;            
    }
}

Из другого веб-приложения я хочу подключиться к этим службам, также используя Autofac, поэтому я регистрирую зависимости, такие как:

public class IocConfig
{
    //Ioc dependencies for frontend application
    public static void RegisterDependencies()
    {
        var builder = new ContainerBuilder();

        builder.RegisterControllers(typeof(MvcApplication).Assembly);

        builder.RegisterModule<AutofacWebTypesModule>();

        builder
            .Register(c => new ChannelFactory<ISomeWebService>(
                new BasicHttpBinding(),
                new EndpointAddress("http://localhost/MyApp.WebServices/MyWebService.svc")))
            .InstancePerLifetimeScope();

        //register service proxies
        builder.Register(c => c.Resolve<ChannelFactory<IMyWebService>>().CreateChannel())
            .As<IMyWebService>()
            .UseWcfSafeRelease();

        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    }
}

Внутри одного из контроллеров я делаю следующее:

public SomeController(IMyWebService myServiceProxy) 
    {
        _myServiceProxy = myServiceProxy;

        var response =_myServiceProxy.CallSomeMethod(new Request()
        {
            EmailAddress = "test@test.com"
        });
    }

MyServiceProxy типа IMyWebService разрешается, я вижу, что это прозрачный прокси, но когда я вызываю "CallSomeMethod", я получаю ошибку:

Из области, в которой был запрошен экземпляр, не видна область с тегом, совпадающим с "AutofacWebRequest". Как правило, это указывает на то, что компонент, зарегистрированный как запрос на HTTP, запрашивается компонентом SingleInstance() (или аналогичным сценарием). При веб-интеграции всегда запрашивают зависимости из DependencyResolver.Current или ILifetimeScopeProvider.RequestLifetime, а не из самого контейнера.,

Что я здесь не так делаю? Спасибо!

1 ответ

Решение
Другие вопросы по тегам