C# 为什么我的BackgroundService参数总是空的?

C# 为什么我的BackgroundService参数总是空的?,c#,asp.net-core,arguments,windows-services,background-service,C#,Asp.net Core,Arguments,Windows Services,Background Service,我正在使用.NETCore3.1中的BackgroundService 代码有两部分,第一部分是BackgroundService本身,我正在使用它的发布格式。使用以下指南中的相同方法: 第二个项目是一个服务控制器,我试图使用它来启动服务并向其传递参数 主要后台服务应用程序: public class Program { public static void Main(string[] args) { Log.Logger = new LoggerConfi

我正在使用.NETCore3.1中的BackgroundService

代码有两部分,第一部分是BackgroundService本身,我正在使用它的发布格式。使用以下指南中的相同方法:

第二个项目是一个服务控制器,我试图使用它来启动服务并向其传递参数

主要后台服务应用程序:

   public class Program
{
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
            .Enrich.FromLogContext()
            .WriteTo.File(@"C:\temp\workerservice\logfile.txt")
            .CreateLogger();

        Log.Information($"Test Args Given {args}");

        var param = Console.ReadLine();
        Log.Information($"Params {string.Join("", args)}");

        try
        {
            Log.Information("Starting The Service");
            Log.Information($"Args Given {string.Join("", args)}");
            CreateHostBuilder(args).Build().Run();
            return;
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Problem Starting the Service");
            return;
        }
        finally {
            Log.CloseAndFlush();
        }
    }
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseWindowsService()
            .ConfigureServices((hostContext, services) =>
            {
                IConfiguration configuration = hostContext.Configuration;
                DriverConfig options = configuration.GetSection("DriverConfig").Get<DriverConfig>();
                Log.Information($"Running with options {options.DriverName} at {options.IpAddress}");
                services.AddSingleton(options);
                services.AddSingleton<CustomDriver, ExampleDriver>();
                services.AddHostedService<DriverSetup>();
            }).UseSerilog();
}
问题是,从Worker服务中,我看不到任何参数,因为args以null形式输入。
任何建议/帮助都将不胜感激。

您能通过命令行传递参数吗:(net start MQTTArgless/a)?遗憾的是,我不能使用Log.Information($“args{string.Join(“,args)}”);为了检查它们的结果是什么,没有什么是loggedCan您可以通过命令行传递参数:(netstart MQTTArgless/a)?遗憾的是,我使用Log.Information($“args{string.Join(“,args)}”);检查它们的结果,但没有任何记录
        static void Main(string[] args)
    {
        ServiceController[] objService;
        objService = ServiceController.GetServices();
        string[] Driver1Config = new string[] { "DriverTemplate", "http://localhost:5001"};

        foreach (ServiceController SController in objService)
        {
            if (SController.ServiceName == "MQTTArgless")
            {
                ServiceController sc = new ServiceController("MQTTArgless", "MSI");
                Console.WriteLine("Status = " + sc.Status);
                Console.WriteLine("Can Pause and Continue = " + sc.CanPauseAndContinue);
                Console.WriteLine("Can ShutDown = " + sc.CanShutdown);
                Console.WriteLine("Can Stop = " + sc.CanStop);
                string[] argArray = new string[] { "MQTTArgless", "http://MSI:5001" };
                sc.Start(argArray);
                sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(30));
            }

        }
    }