Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Nancy与Autofac和ASP.NET核心windows服务集成_C#_Asp.net Core_Dependency Injection_Autofac_Nancy - Fatal编程技术网

C# 如何将Nancy与Autofac和ASP.NET核心windows服务集成

C# 如何将Nancy与Autofac和ASP.NET核心windows服务集成,c#,asp.net-core,dependency-injection,autofac,nancy,C#,Asp.net Core,Dependency Injection,Autofac,Nancy,让我尽量保持简单。我的最终目标是使用asp.net core 2.1和Nancy框架创建windows服务 经过大量研究,我发现以下步骤 设置Windows服务- 将Nancy连接到.net核心应用程序 问题陈述 Install-Package Nancy.Bootstrappers.Autofac -Version 2.0.0-clinteastwood 我的Windows服务使用的类库是使用DI的.net标准和Autofac开发的 现在,我如何集成Autofac而不是Nancy的微

让我尽量保持简单。我的最终目标是使用
asp.net core 2.1
Nancy
框架创建
windows服务

经过大量研究,我发现以下步骤

  • 设置Windows服务-

  • 将Nancy连接到.net核心应用程序

  • 问题陈述

        Install-Package Nancy.Bootstrappers.Autofac -Version 2.0.0-clinteastwood
    
    我的Windows服务使用的类库是使用DI的
    .net标准
    Autofac
    开发的

    现在,我如何集成
    Autofac
    而不是
    Nancy的微型IOC容器

    我尝试安装nuget

        Install-Package Nancy.Bootstrappers.Autofac -Version 2.0.0-clinteastwood
    
    并编写了如下代码

       protected override void ConfigureApplicationContainer(ILifetimeScope container)
       {
    
        _services.Configure<Settings>(_configuration.GetSection("MySettings"));
        var deviceId = _configuration["Settings:DeviceId"];
    
        var containerFactory = new ContainerFactory();
    
        container.Update(builder =>
        {
            builder.RegisterInstance(containerFactory).As<IContainerFactory>();
            containerBuilder.Register(c => new Engine(containerFactory));
            containerBuilder.Register(i => 
             new HubClient(deviceId, containerFactory))
              .As<HubClient>().SingleInstance();
        });
        base.ConfigureApplicationContainer(container);
    }
    
    protected override void ConfigureApplicationContainer(ILifetimeScope容器)
    {
    _services.Configure(_configuration.GetSection(“MySettings”));
    var deviceId=_配置[“设置:deviceId”];
    var containerFactory=new containerFactory();
    container.Update(builder=>
    {
    builder.RegisterInstance(containerFactory).As();
    Register(c=>newengine(containerFactory));
    containerBuilder.Register(i=>
    新HubClient(deviceId,containerFactory))
    .As().SingleInstance();
    });
    基本配置应用程序容器(容器);
    }
    
    在这里,我想注入我的类实例。但是怎么做呢?

       public static void Main(string[] args)
        {
            var isService = !(Debugger.IsAttached || args.Contains("--console"));
            var builder = CreateWebHostBuilder(args.Where(arg => arg != "--console").ToArray());
    
            if (isService)
            {
                var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
                var pathToContentRoot = Path.GetDirectoryName(pathToExe);
                builder.UseContentRoot(pathToContentRoot);
            }
    
            var host = builder.Build();
    
            if (isService)
            {
                //this line fails
                 IContainerFactory containerfactory = host.Services.GetService<IContainerFactory>();
                host.RunAsCustomService();
            }
            else
            {
                host.Run();
            }
        }
    
    publicstaticvoidmain(字符串[]args)
    {
    var isService=!(Debugger.IsAttached | | args.Contains(“--console”);
    var builder=CreateWebHostBuilder(args.Where(arg=>arg!=“--console”).ToArray();
    如果(iService)
    {
    var pathToExe=Process.GetCurrentProcess().MainModule.FileName;
    var pathToContentRoot=Path.GetDirectoryName(pathToExe);
    builder.UseContentRoot(pathToContentRoot);
    }
    var host=builder.Build();
    如果(iService)
    {
    //这条线坏了
    IContainerFactory containerfactory=host.Services.GetService();
    host.RunAsCustomService();
    }
    其他的
    {
    host.Run();
    }
    }
    
    如何获取/注入引擎HubClient实例