.NET9新增的MapStaticAssets导致的问题:WebApp部署到Linux后,新上传图片404, ftp传上去的图片也是404,项目发布时就有的图片访问一切正常
问题
.NET9 WebApp部署到Ubuntu 24.04
网页看上去访问都正常,继续测试,上传图片后,发现图片无法显示,直接用url访问404。自己ftp上传上去的图片也无法显示,即使权限加到最高也没有用。
项目发布时就有的图片访问一切正常
原因
.NET9 新增了MapStaticAssets,可以对css, js等在编译时就提供极高的压缩比,缩小90%左右。大多数情况可以取代UseStaticFiles。
File | Original | Compressed | % Reduction |
---|---|---|---|
bootstrap.min.css | 163 | 17.5 | 89.26% |
jquery.js | 89.6 | 28 | 68.75% |
bootstrap.min.js | 78.5 | 20 | 74.52% |
Total | 331.1 | 65.5 | 80.20% |
但其仅对发布时就有的资源有效。使用中新上传的文件不起作用,且新上传的文件url访问直接404。
能不能配置,支持后上传的文件也能访问?有知道的朋友请回复到评论区。
解决办法
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
// 配置静态文件中间件,解决新上传图片404问题
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.MapStaticAssets(); // 使用 MapStaticAssets编译时优化css,js等资源的尺寸
app.Run();
增加这句:app.UseStaticFiles();