C# 为什么我的BackgroundService参数总是空的?
我正在使用.NETCore3.1中的BackgroundService 代码有两部分,第一部分是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
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));
}
}
}