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下都能生效:
- 在
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)); }); }); - 在中间件管道中启用CORS(必须放在
UseRouting之后,UseAuthorization之前):app.UseCors("AllowAngular"); - 最后把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
相关产品推荐
相关产品推荐

