运行内存测试服务器时如何读取开发设置?

问题描述 投票:0回答:1

我有一个 ASP.NET Core 8 Web API 项目,其中包含以下设置文件:

  • appsettings.json
  • appsettings.Local.json

按照此处的说明,我还有一个测试项目来运行内存测试服务器。到目前为止只有这个配置:

var factory = new WebApplicationFactory<Program>() .WithWebHostBuilder(builder => { builder.ConfigureServices(services => { }); builder.ConfigureTestServices(services => { }); builder.ConfigureAppConfiguration(config => { config.AddConfiguration(Configuration); }); });
问题是当测试项目运行内存测试服务器时。它从 ASP.NET Core Web API 项目中获取 

appsetting.json

 而不是 
appsettings.Local.json
 文件。

var builder = WebApplication.CreateBuilder(args); //...some services registration here builder.Cofiguration["ConnectionsStrings:MyData"] // This reads the value from "appsettings" instead "appsettings.Local" var app = builder.Build();
如何配置测试项目,以便 

Program.cs

 加载 
appsettings.Local.json
 值?

asp.net-core-webapi appsettings asp.net-core-8
1个回答
0
投票
对于要发布的文件,将

webconfig

 文件配置为此答案。 
如何使用不同的appsettings.json文件进行不同的部署?

<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Local" />
要选择本地,请将

ASPNETCORE_ENVIRONMENT

中的
launchSettings.json
更改为本地。

还有一些配置可以更灵活地控制

appsettings

的选择。

builder.ConfigureAppConfiguration((context, config) => { config.Sources.Clear(); config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); config.AddJsonFile("appsettings.Local.json", optional: true, reloadOnChange: true); config.AddEnvironmentVariables(); });
这将使 

appsettings.json

 成为默认值,覆盖其他文件,并且如果未在其他文件中配置,则保持设置与 
appsettings.json
 中配置的设置保持相同。

© www.soinside.com 2019 - 2024. All rights reserved.