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

IIS服务器Angular与ASP.NET Core应用CORS异常排查与解决求助

排查与解决IIS上间歇性CORS通信问题

一、先盯紧IIS进程与日志

  • 打开任务管理器,实时监控w3wp.exe的内存和CPU占用。问题出现时如果进程内存飙到2GB以上,基本是CORS模块或相关扩展内存泄漏,导致工作进程瘫了没法处理请求。
  • 去C:\inetpub\logs\LogFiles找IIS日志,筛选问题时段的记录,看有没有500错误或者CORS相关的报错(比如Access-Control-Allow-Origin头丢了、格式不对)。
  • 开启IIS的失败请求跟踪规则,抓取问题发生时的请求细节,看看CORS头生成是不是出了岔子。

二、调整应用池回收策略

  • 默认IIS应用池回收间隔太长,内存泄漏积累到一定程度就会崩溃。打开IIS管理器找到对应应用池,进入「高级设置」→「回收」:
    • 设置固定回收时间(比如4小时),或者设定虚拟内存限制(1.5GB)、私有内存限制(1GB),让IIS自动回收异常进程,不用手动重启。
    • 检查「快速失败保护」配置,如果短时间内报错太多,IIS会自动关闭进程,但阈值太高的话触发不了,可把失败请求次数调至5次左右,时间间隔设为5分钟。

三、排查CORS配置的动态问题

  • 如果用Web.config配置CORS,别在API代码里重复添加Access-Control-Allow-Origin头,很容易冲突导致规则失效。正确的静态配置示例:
    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="https://你的Angular域名.com" />
          <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
          <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
    
  • 要是代码里有动态修改CORS规则的逻辑,检查是否存在资源未释放、缓存异常的情况,这会导致运行数小时后规则失效。

四、检查连接池与网络

  • 查看应用池的「连接限制」(高级设置内),别把最大连接数设得过低,队列长度不足的话,时间久了连接会耗尽,新请求无法处理。
  • 检查服务器防火墙或监控工具,有没有会话超时、连接被强制断开的情况,尤其是Angular和API之间的长连接场景。

五、更新组件补丁

  • 检查IIS CORS模块版本,旧版本可能存在已知的内存泄漏BUG,更新到最新版本试试。
  • 如果API基于.NET开发,确保.NET Framework或.NET Core运行时是最新状态,打全补丁,不少旧版本会存在进程异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:12:54