.Net Core应用运行--console参数时触发System.FormatException问题求助
解决运行Windows服务exe时
--console参数的FormatException问题 嘿,我之前也踩过这个坑!咱们来捋捋问题出在哪,怎么解决:
检查命令行参数的写法
确保你输入的命令是YourApp.exe --console,注意--console后面不要加等号或者任何多余的字符——这个参数是开关型参数(不需要对应的值),如果你的命令写成了YourApp.exe --console=或者后面误加了空格和其他内容,就会触发这个错误。修正Program.Main里的参数解析逻辑
错误提示说“--console的参数值缺失”,大概率是你在解析命令行参数时,错误地把这个开关当成了需要接收值的选项。比如如果是手动解析参数,要改成识别它是否存在即可:static void Main(string[] args) { bool runAsConsole = args.Contains("--console"); var hostBuilder = CreateHostBuilder(args); if (runAsConsole) { // 以控制台模式启动 hostBuilder.Build().Run(); } else { // 以Windows服务模式启动 hostBuilder.Build().RunAsService(); } }如果你用了第三方参数解析库(比如CommandLineParser),要确保把
--console标记为不需要值的布尔开关,比如给对应的属性加上[Option(Required = false, HelpText = "Run in console mode")]这样的特性,不要设置成需要值的类型。确认ASP.NET Core版本适配
你参考的是2.x版本的文档,如果你的项目用的是3.1及以上的.NET Core/ASP.NET Core,要确保服务启动的逻辑符合对应版本的要求。比如在高版本中,RunAsService()已经被整合到UseWindowsService()扩展方法里,控制台模式的触发逻辑要和这个配合好,不要混用旧版本的写法。
内容的提问来源于stack exchange,提问作者Derek
相关产品推荐
相关产品推荐

