首页 > 解决方案 > 在 .NET Core 控制台应用程序中托管 Web API 和另一个自定义服务

问题描述

我假设我是 .NET Core 的新手,通常在完整框架中我使用 TopShelf 将控制台应用程序用作服务。

现在,我已经成功创建了为 WebApi 提供服务的 .NET Core 应用程序,但我需要附加我编写的另一个服务(它是一个接收消息并将它们分派回来的 IBMMQ 服务)。

我当前的 program.cs 是

class Program
    {
        static void Main(string[] args)
        {
            DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
            Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

            var host = WebHost.CreateDefaultBuilder()
                // .UseContentRoot(pathToContentRoot)
                .UseStartup<Startup>()
                .Build();

            host.Run();

        }
    }

这是我的创业公司

 class Startup
    {
        private readonly Container container = new Container();

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            IntegrateSimpleInjector(services);

            services.AddControllers();
            services.AddSimpleInjector(container);

            services.BuildServiceProvider(validateScopes: true)
                .UseSimpleInjector(container);
        }

        private void IntegrateSimpleInjector(IServiceCollection services)
        {

            container.Options.DependencyInjectionBehavior =
                new SerilogContextualLoggerInjectionBehavior(container.Options);

            services.AddHttpContextAccessor();

            services.AddSingleton<IControllerActivator>(
                new SimpleInjectorControllerActivator(container));

            services.EnableSimpleInjectorCrossWiring(container);

            services.UseSimpleInjectorAspNetRequestScoping(container);
        }

        public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHostingEnvironment env)
        {
            InitializeContainer(app);

            DataConnection.DefaultSettings = new Linq2DbSettings();
            LinqToDB.Common.Configuration.Linq.AllowMultipleQuery = true;

            app.UseRouting();

            app.UseEndpoints(endpointRouteBuilder => endpointRouteBuilder.MapControllers());
            container.RegisterMvcControllers(app);
            container.Verify();


        }

        private void InitializeContainer(IApplicationBuilder app)
        {
          //register container

        }
    }

有没有办法可以在这里添加我的服务启动?

谢谢

标签: c#.net-core

解决方案


推荐阅读