部署.NET 6+React应用至IIS后API访问出现404错误
.NET 6+React项目IIS部署后API 404问题解决方法
问题核心
你把IIS物理路径指向了发布包内的wwwroot子目录,这只会让IIS托管前端静态文件,后端的.NET程序集不在这个路径下,导致API请求无法被.NET运行时处理,所以出现404。
解决步骤
调整IIS物理路径
把网站物理路径改成发布包的根目录inetpub\wwwroot\PublishFiles,而不是子目录wwwroot。这样IIS才能加载后端的.NET程序集,同时UseStaticFiles中间件会自动处理wwwroot里的前端资源,前端页面依然能正常访问。修正Program.cs中间件顺序与路由配置
确保中间件顺序和路由配置正确,API请求需要对应的路由映射才能被控制器处理:// 先处理静态文件 app.UseStaticFiles(); // 如果是MVC控制器,添加默认路由 app.MapControllerRoute( name: "default", pattern: "{controller}/{action}/{id?}"); // 如果是API控制器(带[ApiController]特性),添加API路由映射 app.MapControllers(); // 最后处理SPA路由 fallback,确保前端路由正常 app.MapFallbackToFile("index.html");你之前的代码缺少API或MVC路由的配置,这是API无法被识别的关键原因之一。
检查应用程序池设置
- 应用程序池的
.NET CLR版本要设为无托管代码,因为ASP.NET Core项目不需要传统的.NET Framework托管环境。 - 确保应用程序池的身份拥有发布目录的读写权限,避免因权限问题导致程序无法启动。
- 应用程序池的
确认ASP.NET Core模块已安装
检查IIS的模块列表里是否存在AspNetCoreModuleV2,这个模块负责将IIS请求转发给.NET Core运行时。如果没有,需要重新安装.NET 6宿主包(安装时勾选IIS托管组件)。
内容的提问来源于stack exchange,提问作者Bam
相关产品推荐
相关产品推荐

