我可以在一个具有不同配置的环境上运行两个TestServer吗?

时间:2019-02-12 16:27:01

标签: c# asp.net-core .net-core

我正在编写一个流程,用于代理两个相同API(FWIW,一个是在不同容器中运行的本地API,另一个是在云中)之间的数据传输。

我想编写一些测试代码,以确保数据传输代码执行应有的功能。到目前为止,我一直在使用TestServer进行API测试,但是现在当我要运行两台服务器时,事情可能会变得有些复杂。出现几个问题:

  1. 如何让他们使用不同的appsettings.json文件?目前,只有一个TestServer,它正在使用测试项目的appsettings.json。如何配置TestServer以使用其他配置文件?
  2. 一旦有两个TestServers启动并运行,它们是否会作为完全独立的实体运行?最特别的是,如果我有任何static值,它们的值会在两个环境之间共享吗?或者它们可以像现实生活中那样独立运行?

2 个答案:

答案 0 :(得分:1)

  1. 这一点取决于您如何创建TestServer。
    1. 如果您使用leading的构造函数(以TestServer作为输入),则可以使用Web主机构建器的IWebHostBuilder方法来设置所需的任何配置源。如果您不进行任何更改,则Appsettings.json是默认的配置源,但是使用不同的ConfigureAppConfiguration创建两个单独的TestServer应当很容易,每个调用都有自己的IWebHostBuilder
    2. 如果您使用的是WebApplicationFactory approach,则可以创建custom WebApplicationFactory并使用该类型的ConfigureAppConfiguration方法设置配置源。
  2. 由于它们在相同的进程/应用程序域中运行,因此这两个TestServer将是单独的实例,但共享静态信息。如果不希望这样,您可以考虑在进程外的服务器上作为“真实”服务器(而不是TestServer)运行,或者甚至最好避免使用静态变量!

答案 1 :(得分:0)

我们在这里需要更多信息...您如何注册appsettings.json?您在使用DI吗?

a)更改环境配置(服务器/云) How do I transform appsettings.json in a .NET Core MVC project?

b)创建第二个appsettings并在您的应用程序配置中进行更改。 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2