Ubuntu 20.04运行.Net项目GET请求返回404状态码问题咨询
.NET项目Ubuntu 20.04环境GET 404问题排查方案
1. 检查服务监听配置
- 查看进程启动时的控制台输出,确认服务是否真的监听了
https://localhost:5001,部分Linux环境默认仅绑定http://0.0.0.0:5000,未启用HTTPS监听,此时访问5001端口就会返回404 - 检查
Program.cs/Startup.cs中的端口、HTTPS重定向规则,Windows环境会自动加载本地开发HTTPS证书,Linux环境如果未配置证书可能会跳过HTTPS端口绑定 - 可在启动时显式指定端口验证:
dotnet run --urls "https://localhost:5001;http://localhost:5000"
2. 排查大小写敏感性问题
- Linux文件系统是大小写敏感的,Windows是大小写不敏感的,如果项目静态文件路径、路由模板的大小写和实际定义不一致,Windows下可正常匹配,Linux下就会返回404
- 检查
wwwroot目录下的文件、文件夹名称大小写,以及路由配置的大小写,比如定义的路由是/Home,但实际请求/home在Linux下会匹配失败 - 可添加路由小写化配置规避问题:在
Program.cs中添加builder.Services.AddRouting(options => options.LowercaseUrls = true);
3. 检查默认页、中间件顺序配置
- 如果未显式配置默认静态页,Linux环境访问根路径
/可能无法自动识别index.html/default.html等默认页返回404 - 确认默认页中间件配置顺序要早于静态文件中间件:
app.UseDefaultFiles(); app.UseStaticFiles();
4. 检查目录权限配置
- 确认运行dotnet进程的用户对项目目录、
wwwroot目录有可读权限,Linux下权限不足时服务无法读取静态文件、路由配置文件,也会返回404 - 可执行
sudo chmod -R 755 你的项目目录临时放开权限测试,若访问恢复正常,再按需调整对应目录的权限配置
5. 检查HTTPS证书配置
- .NET在Linux环境默认未安装本地开发HTTPS证书,如果项目配置了强制HTTPS,可能会因为证书校验失败导致请求处理异常返回404
- 可先尝试访问HTTP端口5000,如果返回200,执行
dotnet dev-certs https --trust安装本地开发证书后再测试HTTPS端口即可
内容的提问来源于stack exchange,提问作者Sandeep Prajapati
相关产品推荐
相关产品推荐

