You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS 7.5下.NET Core子应用API部署后出现404 NotFound问题

解决IIS 7.5上.NET Core子应用API 404 NotFound问题

针对主应用正常、子应用API部署后出现404的问题,按以下步骤排查修复:

1. 修正子应用路由配置

你的子应用控制器使用了属性路由[Route("wps/status/{id}")],但Startup里的全局路由配置与属性路由存在冲突,导致请求无法正确匹配。修改Startup.cs的Configure方法中端点配置,直接映射所有带属性路由的控制器:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他代码保持不变
    app.UseEndpoints(endpoints =>
    {
        // 替换原有的MapControllerRoute,改用MapControllers支持属性路由
        endpoints.MapControllers();
    });
}

2. 确认前端请求路径正确性

检查主应用中pollStatusUri的取值,必须指向子应用的完整路径:

  • 错误写法:"/wps/status/123"(会指向主应用路由,导致404)
  • 正确写法:"/Toolbox-WPS/wps/status/123"(明确指定子应用名称)

3. 调整子应用程序池设置

.NET Core应用不能使用.NET Framework 4.0的应用程序池,需改为无托管代码:

  • 打开IIS管理器,找到Toolbox-WPS的应用程序池
  • 右键选择“高级设置”,将.NET Framework版本改为无托管代码
  • 身份保持ApplicationPoolIdentity即可

4. 验证子应用部署文件完整性

确保服务器上的子应用部署目录包含:

  • 正确的web.config文件(由.NET Core发布自动生成,配置AspNetCoreModule反向代理),示例配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Toolbox-WPS.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
  • 所有发布生成的dll、runtime依赖文件,若缺失会导致应用无法启动,引发404

5. 检查目录权限

确保IIS AppPool\Toolbox-WPS用户对子应用部署目录拥有读取和执行权限:

  • 右键部署目录 → 属性 → 安全 → 添加用户IIS AppPool\Toolbox-WPS
  • 赋予该用户“读取和执行”、“列出文件夹内容”、“读取”权限

6. 启用日志排查细节

若以上步骤无效,开启子应用的stdout日志定位问题:

  • 修改web.config中stdoutLogEnabled="true"
  • 在部署目录下创建logs文件夹
  • 触发API请求后,查看logs/stdout日志,可获取应用启动或请求处理的具体错误信息

内容的提问来源于stack exchange,提问作者Samra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:09:30