我使用TESTSERVER这是自举一个复杂的配置如下创建一些测试:asp.net核心TESTSERVER找不到配置
var config = new ConfigurationBuilder()
.Build();
webHostBuilder = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.CaptureStartupErrors(true)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<MockLicenseStartup>()
.UseEnvironment("Development")
.UseUrls("http://locahost");
testServer = new TestServer(webHostBuilder);
无论是在我的“asp.net芯”项目,在我的测试项目中,我创建了多个appsettings.json这是用来提供喜欢的事物:
- 连接字符串
- 登录冗长
- 自定义栏目
我现在面临的问题是,我的配置一流,MockLicenseStartup内是无法加载任何可用appsettings.json的。
内部MockLicenseStartup.cs使用的代码是这样一个:
public MockLicenseStartup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
当我打电话Configuration.GetConnectionString(“”)抛出异常,如果我进一步检查我可以看到,没有配置具有实际上已经加载。大概是关系到.UseContentRoot(Directory.GetCurrentDirectory())
不,因为在生产工作中,我们甚至没有web.config ... – Raffaeu
@RamSingh:你错了,因为没有web.config用于配置ASP.NET内核和IConfiguration读取配置配置设置(可以是基于文件的json,环境变量或命令行参数,取决于您在ConfigurationBuilder()调用期间插件的提供商 – Tseng
我认为您的测试Web主机构建器有冗余的东西 - 您指定了两次配置。你可以省略'.UseKestrel()','.UseContentRoot(Directory.GetCurrentDirectory())','。UseIISIntegration()' –