.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(); 

相关链接:

posted @ 2024-12-16 16:09  jopny  阅读(7)  评论(0编辑  收藏  举报