如果ASP.NET Core / Kestrel不一致地提供静态内容,可以尝试以下解决方法:
app.UseStaticFiles();
这将启用静态文件的访问。
确保静态文件的目录正确设置。在项目的根目录中,应该有一个名为wwwroot的文件夹,并且静态文件应该位于该文件夹中。
确保在Kestrel服务器配置中正确设置静态文件的选项。在Program.cs文件中的CreateHostBuilder方法中,添加以下代码:
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup()
.UseKestrel(options =>
{
options.ConfigureEndpointDefaults(lo => lo.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1AndHttp2);
});
});
这将确保Kestrel服务器使用正确的HTTP协议来提供静态内容。
如果以上解决方法仍然无效,可以尝试使用其他的静态文件中间件,如Microsoft.AspNetCore.StaticFiles。在Configure方法中,尝试替换app.UseStaticFiles()为以下代码:
app.UseFileServer();
这将使用更全面的静态文件中间件来提供静态内容。
希望这些解决方法能够帮助您解决ASP.NET Core / Kestrel不一致地提供静态内容的问题。