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



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

如果这些都对您没有帮助,请提供更多上下文,例如共享项目以及有关如何运行已发布版本的详细信息。

相关内容

  • 没有找到相关文章

最新更新