c# - 我可以在一个环境中使用不同的配置运行两个 TestServers 吗?

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

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

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

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

最佳答案

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

关于c# - 我可以在一个环境中使用不同的配置运行两个 TestServers 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54654568/

相关文章:

c# - 如何在 ASP.NET Core Swagger (Swashbuckle.AspNetCore) 中定义 Controller 描述?

asp.net-core - .NET Core - Json.NET 反序列化映射

c# - 我删除了我的包文件夹,现在我无法在 VS2019 中构建

c# - .Net Core 中的 Console.Write

c# - 如何制作整数 ID 生成器?

C# 局部类

c# - 在不同设备上运行时,TcpListener 不接受 TcpClient [C#、Unity]

c# - 配置 ASP.NET Core 应用程序的正确顺序是什么?

c# - 是否有任何约定或内置概念如何注入(inject) Json 序列化程序?

.net-core - 作为 dotnet 构建的一部分,如何将 appsettings.json 复制到 DEBUG 文件夹