我可以在开发时读取值(value1,Value2),在发布可能的问题之后不能读取它们吗?
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"]}");
}
JSON:
{
"Value1": "Hello",
"Value2": "World"
}
答案 0 :(得分:0)
也许您的发布工作没有将appsettings.json
复制到发布文件夹?
您可以通过检查您的应用发布到的目录的内容来确认。
您是使用.NET Core CLI发布的吗?喜欢:dotnet publish -c Release
?
您定位的是哪个版本?如果是netcoreapp2.0,例如:
发布路径为bin\Release\netcoreapp2.0\publish
。
你应该能够在那里找到appsettings.json
。
如果不存在,您可以通过更改项目文件(csproj)来修复它:
</PropertyGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
</ItemGroup>
如果这不是问题且文件实际上在发布目录中,则可能是您调用该程序的目录不是发布目录,并且在运行时代码找不到appsettings.json
如果这些都没有帮助您,请提供更多上下文,例如分享项目以及有关如何运行已发布版本的详细信息。
答案 1 :(得分:0)
更改您添加到此的构造函数:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
}
public IConfiguration Configuration { get; }
这样可以正常使用。