asp.net-mvc - Autofac 错误 - 从请求实例的范围中看不到具有匹配 'AutofacWebRequest' 的标签的范围

标签 asp.net-mvc wcf dependency-injection autofac autofactory

在我的一个 web 应用程序中,我有一个使用 Autofac 的 web 服务,svc 文件如下:

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

我为我的 Web 服务应用程序注册依赖项,如下所示:
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;            
    }
}

从另一个 Web 应用程序中,我想也使用 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));
    }
}

在其中一个 Controller 中,我执行以下操作:
public SomeController(IMyWebService myServiceProxy) 
    {
        _myServiceProxy = myServiceProxy;

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

正在解析 IMyWebService 类型的 myServiceProxy,我看到它是一个透明代理,但是当我调用“CallSomeMethod”时出现错误:

从请求实例的范围中看不到具有匹配“AutofacWebRequest”的标签的范围。这通常表明 SingleInstance() 组件(或类似场景)正在请求注册为每个 HTTP 请求的组件。在 Web 集成下,始终从 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime 请求依赖项,而不是从容器本身请求依赖项.

我在这里做错了什么?谢谢!

最佳答案

关于asp.net-mvc - Autofac 错误 - 从请求实例的范围中看不到具有匹配 'AutofacWebRequest' 的标签的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29460080/

相关文章:

c# - 用于单元测试 .NET 核心 MVC Controller 的模拟 HttpContext?

php - 你能在使用依赖注入(inject)的同时避免大量的私有(private)变量吗?

c# - 如何使用 WCF 发送用户凭据以在远程计算机上使用?

php - 将全局数据库连接传递到模型的每个函数中有什么好处?

c# - 作用域/ transient 依赖注入(inject)确保返回相同的接口(interface)和实现实例

asp.net-mvc - Cakephp 在 asp.net mvc 中烘焙等效

javascript - 在 ASP.NET MVC 中使用 ModelBinding 时,我可以选择要将属性绑定(bind)到哪个元素吗?

jquery - 使用 Jquery 在 ASP.NET MVC 中转换 UTC 日期时间

c# - 如何使 WCF RESTful 服务异步工作?

ASP.Net Web API 与 WCF - Web API 是否可用于为单例 WCF 服务提供基于 REST 的通信?