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

IIS与IIS Express:ASP.NET Core 6 API的CORS模块兼容问题

问题解决方案

关于IIS Express的CORS配置问题

IIS Express不支持安装IIS官方的CORS模块,它作为轻量级开发服务器,没有提供模块扩展的安装机制,所以你在web.config里添加的IIS CORS配置段会被识别为无效配置,导致启动报错。

替代方案是直接在ASP.NET Core代码中配置CORS,这种方式不依赖服务器模块,在IIS、IIS Express、Kestrel下都能生效:

  1. 在Program.cs中注册CORS服务:
    builder.Services.AddCors(options =>
    {
        options.AddPolicy("AllowAngular", policy =>
        {
            // 注意修正你之前的笔误:localhosts多了个s
            policy.WithOrigins("http://localhost:4200")
                  .AllowCredentials()
                  // 按需添加允许的HTTP方法,这里包含你需要的DELETE
                  .WithMethods("GET", "POST", "PUT", "DELETE")
                  .SetPreflightMaxAge(TimeSpan.FromSeconds(120));
        });
    });
    
  2. 在中间件管道中启用CORS(必须放在UseRouting之后,UseAuthorization之前):
    app.UseCors("AllowAngular");
    
  3. 最后把web.config里的<cors>配置段移除,避免冲突。

解决IIS锁定bin/debug文件夹导致构建挂起的问题

试试这几个实用方法:

  • 手动停止IIS Express进程:每次构建前,右键任务栏的IIS Express图标,选择「停止站点」;或者打开任务管理器,找到iisexpress.exe进程结束它。
  • 设置调试后自动停止IIS Express:右键项目→属性→调试→勾选「停止调试时关闭IIS Express」,这样每次结束调试都会自动释放文件锁。
  • 改用Kestrel开发服务器:在项目属性→调试→启动方式选择「项目」,用ASP.NET Core自带的Kestrel服务器,它不会锁定bin文件夹,开发体验更顺畅。
  • 修改IIS Express配置:找到项目根目录.vs/config/applicationhost.config,找到对应站点的<site>节点,添加lockAttributes="false",不过这个方法不如前几个直接有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:07:21