为什么TestServer(AspNetCore)在静态文件上出现404错误?

我有一个示例服务器

var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .Build(); host.Run(); 

在Startup类中配置:

 public void Configure(IApplicationBuilder app) { app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); } 

我正在使用xunit测试(学习):

  public TestFixture() { var builder = new WebHostBuilder().UseStartup(); _server = new TestServer(builder); Client = _server.CreateClient(); Client.BaseAddress = new Uri(address); } 

然后

  var response = await Client.GetAsync("http://localhost:51021/"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var responseString = await response.Content.ReadAsStringAsync(); var content = await response.Content.ReadAsStringAsync(); Assert.Contains("Hello World!", content); 

一切都好(200)。 现在我正在改变Startup.cs

  public void Configure(IApplicationBuilder app) { app.UseDefaultFiles(); app.UseStaticFiles(); //app.Run(async (context) => //{ // await context.Response.WriteAsync("Hello World!"); //}); } 

如果我使用浏览器启动应用程序,一切正常(显示index.html)。 但是如果我用我收到的TestServer调用它(404 Not found)。 我的错误在哪里?

XUnit从不同的目录启动站点。 我们必须像这样解决它: https : //github.com/aspnet/StaticFiles/blob/d692066b2bd711653150ad2cccc2268583355532/test/Microsoft.AspNetCore.StaticFiles.Tests/StaticFilesTestServer.cs#L20