ASP.NET Core MVC 加载bootstrap、jquery报404错误问题问询
问题排查解决方案
- lib文件夹存放位置错误(90%概率)
ASP.NET Core默认的静态文件中间件(包括UseFileServer)仅会处理wwwroot目录下的资源,如果你把lib文件夹直接存放在项目根目录,就算本地文件存在也会返回404。Library Manager默认的安装路径就是wwwroot/lib,如果你没有手动修改过静态文件配置,将整个lib文件夹移动到项目根目录下的wwwroot文件夹内即可修复。 - UseFileServer中间件顺序错误
中间件执行顺序会直接影响请求处理逻辑,静态文件相关中间件必须放在UseRouting之前,否则请求会先被MVC路由拦截,找不到对应控制器就返回404,不会走到静态文件处理逻辑。正确的Configure方法顺序示例如下:
if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseHttpsRedirection(); // 静态文件中间件必须放在UseRouting之前 app.UseFileServer(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
- 静态文件访问权限未配置
如果你确实需要将lib文件夹放在项目根目录而非wwwroot下,需要手动给UseFileServer指定文件映射规则,配置示例:
using Microsoft.Extensions.FileProviders; using System.IO; app.UseFileServer(new FileServerOptions { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), "lib")), RequestPath = "/lib" });
- 资源文件属性配置错误
在解决方案资源管理器中右键点击lib下的css、js文件,查看属性,确认复制到输出目录选项设置为如果较新则复制,如果设置为不复制,运行时输出目录不存在对应文件也会返回404。 - 大小写或路径拼写错误
确认代码中引用的路径、文件夹名、文件名和实际物理路径的大小写、拼写完全一致,哪怕Windows本地不区分大小写,部分中间件配置开启大小写敏感后也会导致404。 - HTTPS重定向拦截请求
如果项目配置了UseHttpsRedirection,你访问的是HTTP地址时会被重定向,可临时注释该中间件,或者直接用launchSettings中配置的HTTPS端口访问测试。
内容的提问来源于stack exchange,提问作者Maro77
相关产品推荐
相关产品推荐

