发布后无法从 Json 文件中读取值

Cant read values from Json file after publishing

我可以在开发时读取值 (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"
    }

也许您的发布作业没有将 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

如果其中 none 对您有帮助,请提供更多背景信息,例如分享项目以及您如何 运行 发布版本的详细信息。

更改您添加到此的构造函数:

public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json");

            Configuration = builder.Build();
        }

public IConfiguration Configuration { get; }

这会很好用。