我可以在开发时读取值(值1,值2),发布后无法读取它们可能有什么问题?
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
Configuration = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json")
.Build();
}
public void readValues()
{
var val1 = ($"{Configuration["Value1"]}");
var val2 = ($"{Configuration["Value2"]}");
}
杰森:
{
"Value1": "Hello",
"Value2": "World"
}
更改您添加到此的构造函数:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
public IConfiguration Configuration { get; }
这将正常工作。
也许您的发布作业没有将appsettings.json
复制到发布文件夹?
您可以通过检查应用发布到的目录的内容来确认这一点。您是否使用 .NET Core CLI 进行发布?比如:dotnet publish -c Release
?
您的目标版本是什么?如果是netcoreapp2.0,例如:发布路径按 binReleasenetcoreapp2.0publish
.你应该能够在那里找到appsettings.json
。
如果不存在,您可以通过更改项目文件 (csproj) 来设置修复它:
</PropertyGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
</ItemGroup>
如果这不是问题,并且文件实际上位于发布目录中,则可能是您调用程序的目录不是发布目录,并且在运行时代码找不到appsettings.json
如果这些都对您没有帮助,请提供更多上下文,例如共享项目以及有关如何运行已发布版本的详细信息。