我一直在使用 HttpClient 来设置我的 Web API 测试。这很酷,因为您可以让 HttpClient 通过网络进行调用(实际上是访问远程资源)或将服务器托管在内存中并实际在内部调用它。极大的灵活性。我遇到了一个问题:
using (HttpSelfHostConfiguration config2 = new HttpSelfHostConfiguration
("http://localhost:47620/"))
{
config2.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new
{id=RouteParameter.Optional });
server = new HttpServer(config2);
httpClient = new HttpClient(server);
httpClient.BaseAddress = new Uri("http://localhost:47620/");
var response = await httpClient.GetAsync(new Uri("api/values/5", UriKind.Relative));
var version = await response.Content.ReadAsStringAsync();
}
HttpClient 允许我通过线路或内存调用测试,如上所示。在电线上运行它们效果很好。但是,当我在内存中运行它们时(上面的示例),测试确实按预期命中控制器,但在控制器内部,如果需要 app.config 值,则它为空。
有谁知道如何让 HttpClient 的内存主机尊重您的应用程序配置?如果这是不可能的,这似乎是一个巨大的洞。
提前致谢!