AspNet Core 2.0 Web API部署为Windows Service时环境配置文件加载失败
解决Asp.Net Core 2.0 Windows服务环境配置文件加载失败的问题
嘿,这个坑我之前也踩过!你看代码里的这行:
.AddJsonFile("appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
问题出在字符串插值的语法缺失上!
你现在写的是普通字符串,程序会傻乎乎地去找一个名叫appsettings.{env.EnvironmentName}.json的文件(连大括号都当成文件名的一部分),根本不会把env.EnvironmentName替换成实际的环境名称(比如Development)。这就是为什么硬编码文件名能正常工作,动态替换就失效了。
修复方法
只需要给字符串加上$前缀,启用C#的字符串插值功能:
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
额外验证小技巧
- 确认环境变量生效:
你设置的ASPNETCORE_ENVIRONMENT得是系统级环境变量(Windows服务默认跑在系统上下文,用户级变量可能读不到),设置后记得重启服务甚至机器让变量生效。 - 临时加日志确认环境名称:
可以在代码里插一行输出,看看实际拿到的环境名对不对:
能快速排查是不是环境变量没正确传递给服务。Console.WriteLine($"当前环境: {env.EnvironmentName}");
内容的提问来源于stack exchange,提问作者Nicolas Boisvert
相关产品推荐
相关产品推荐

