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

.NET 6+Angular本地CORS正常,IIS部署后CORS规则失效求助

解决IIS部署后.NET 6 CORS策略失效问题

1. 先查IIS原生CORS模块有没有启用

打开IIS管理器,找到你的站点,看功能视图里有没有「CORS」模块。要是开着,它会优先于.NET的CORS中间件处理请求,你在.NET里配的策略根本不会生效。

  • 禁用方式:右键站点 → 功能视图 → 找到「CORS」→ 点击禁用;或者直接删站点web.config里的CORS相关配置节点。

2. 确认.NET 6的CORS中间件加载顺序没搞错

在Program.cs里,CORS中间件必须放在路由中间件之前,而且如果用了静态文件,得放在静态文件中间件之后,给你个示例代码参考:

var builder = WebApplication.CreateBuilder(args);

// 注册CORS服务
builder.Services.AddCors(options =>
{
    options.AddPolicy("MyCorsPolicy", policy =>
    {
        policy.WithOrigins("https://你的允许域名.com")
              .WithMethods("GET", "POST") // 明确指定允许的请求方法
              .AllowCredentials();
    });
});

builder.Services.AddControllers();

var app = builder.Build();

// 先开静态文件(如果用到的话)
app.UseStaticFiles();

// 然后启用CORS,这步必须在UseRouting之前
app.UseCors("MyCorsPolicy");

app.UseRouting();

app.UseAuthorization();

app.MapControllers();

app.Run();

3. 检查web.config里有没有冲突配置

打开站点根目录的web.config,看看<httpProtocol>节点下有没有手动加的Access-Control-Allow-Origin头,要是有,会直接覆盖.NET的配置,把这类配置删掉:

<httpProtocol>
  <customHeaders>
    <!-- 删掉下面这种自定义的CORS头 -->
    <!-- <add name="Access-Control-Allow-Origin" value="*" /> -->
  </customHeaders>
</httpProtocol>

4. 用浏览器工具验证响应头

按F12打开浏览器开发者工具,看请求的响应头,确认Access-Control-Allow-Origin是不是你在.NET里配的指定域名,而不是*或者其他奇怪的值。要是看到*,说明IIS某个模块在自动加这个头,回头查前面1、3步骤。

5. 检查IIS应用池设置

把应用池的**.NET CLR版本**设为「无托管代码」,因为.NET 6是独立部署的,不需要IIS托管,不然托管模块会干扰CORS策略。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:24