为什么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