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

IIS子目录重写至不同端口:ASP.NET与Node.js集成问题排查

解决IIS URL Rewrite导致非/api路径404的问题

我仔细看了你的配置和问题描述,问题出在URL Rewrite规则的处理逻辑上——虽然你的规则只匹配api/(.*)路径,但默认情况下,IIS在执行Rewrite规则时,可能会干扰原生ASP.NET请求的处理流程。下面是具体的排查和修复步骤:

问题根源

你当前的Proxy规则没有设置stopProcessing="true",这意味着即使请求不匹配api/(.*),IIS仍可能继续执行后续的Rewrite逻辑(哪怕没有其他规则),导致原生ASP.NET的请求路由被中断,最终返回404。另外,也需要确保规则的匹配逻辑完全符合预期,避免意外拦截非/api请求。

修复后的配置

修改你的<rule>节点,添加stopProcessing="true",并明确匹配模式的语法,确保规则仅作用于目标路径:

<rule name="Proxy" stopProcessing="true">
  <match url="api/(.*)" ignoreCase="true" patternSyntax="ECMAScript" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="rev.0970.co.kr" ignoreCase="true" />
  </conditions>
  <action type="Rewrite" url="http://localhost:4000/api/{R:1}" />
</rule>

额外检查项

  • 确认你的IIS站点使用的是集成模式的应用程序池,且对应的.NET Framework版本与ASP.NET项目兼容
  • 检查站点的处理程序映射,确保.aspx扩展名已关联到ASP.NET的处理程序(比如System.Web.UI.PageHandlerFactory)
  • 验证ARR代理功能是否仅针对匹配规则的请求生效,没有全局代理所有请求(ARR的代理设置里,确保“启用代理”是勾选的,但不要设置全局转发)

验证效果

修改配置后,重启IIS站点,测试:

  • http://rev.0970.co.kr/api/signin 应该正常转发到Node.js服务
  • http://rev.0970.co.kr/index.aspx 应该由ASP.NET正常处理,不再返回404

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:28:55