【发布时间】:2017-06-23 12:26:27
【问题描述】:
如何将数据传递到 startup.cs 中?
这是用于使用 WebHostBuilder 和 TestServer 进行集成测试
我需要根据测试夹具传递不同的数据。所以不想从配置文件中提取它,例如
数据将提供给在 startup.cs 中注册的中间件
文档似乎表明这应该可行:
var configBuilder = new ConfigurationBuilder()
.AddInMemoryCollection(new[]
{
new KeyValuePair<string, string>("key", "value"),
});
var configuration = configBuilder.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseConfiguration(configuration) // config added here
.UseStartup<Startup>()
.Build();
host.Run();
但是当我检查 startup.cs 中的配置对象时,密钥不存在。并且只有 startup.cs 中定义的提供程序可用。
我目前正尝试在 program.cs 中执行此操作以测试该概念,然后将转到集成测试
任何想法我做错了什么?
有没有更好的方法将数据传递给启动?
【问题讨论】:
-
Main和Startup中的配置完全不同,它们不相互通信。因此,您在此处设置的内容仅用于 Web 主机设置。但是如何将数据发送到Startup是另一回事。你想要它在构造函数中还是Configure或其他地方? -
我在配置中需要它,当我设置一个特定的中间件时,但构造函数也可以
-
您实际上可以在
Main中添加一个Service用于依赖注入,也许这会起作用?如果合适的话,我可以添加一个示例作为答案。例如,它可能是一个包含您想要的数据的单例。 -
当然——任何传递一些数据的机制都适合我!