.NET Core 8无Startup.cs文件,旧教程含该文件及CORS配置该如何处理?
.NET Core 8 无 Startup.cs 时的 CORS 配置方案
.NET Core 6 及后续版本(包括 8)已移除独立的 Startup.cs 文件,原 Startup 中的配置逻辑全部合并到 Program.cs 的顶级语句中。以下是对应旧教程中 CORS 禁用/限制配置的实现方法:
一、完全禁用跨域请求
如果不需要任何跨域支持,无需额外配置,直接删除所有与 CORS 相关的代码即可:
- 移除
Program.cs中builder.Services.AddCors()的代码块 - 移除
app.UseCors()的调用
ASP.NET Core 默认会拒绝跨域请求,浏览器发起跨域请求时会触发 CORS 错误,等同于旧教程中“禁用 CORS”的效果。
二、配置严格跨域规则(限制仅允许特定源)
如果需要仅允许指定域名的跨域请求(类似旧教程中限制跨域的配置),在 Program.cs 中按以下步骤编写:
1. 注册 CORS 服务
var builder = WebApplication.CreateBuilder(args); // 注册CORS服务,设置默认策略仅允许指定源 builder.Services.AddCors(options => { options.AddDefaultPolicy(policy => { // 替换为你允许的前端/客户端域名,可添加多个用逗号分隔 policy.WithOrigins("http://localhost:3000", "https://your-production-domain.com") .AllowAnyHeader() .AllowAnyMethod(); }); }); // 注册其他服务(如控制器) builder.Services.AddControllers();
2. 启用 CORS 中间件
var app = builder.Build(); // 启用CORS中间件(必须放在路由、授权中间件之前) app.UseCors(); // 其他中间件配置 app.UseAuthorization(); app.MapControllers(); app.Run();
三、与旧 Startup.cs 代码的对应关系
旧版本 Startup.cs 中的典型配置:
// Startup.cs public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy("RestrictCors", policy => { policy.WithOrigins("http://your-app-domain.com"); }); }); services.AddControllers(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseCors("RestrictCors"); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => endpoints.MapControllers()); }
在 .NET 8 中,只需将 ConfigureServices 内的 AddCors 移至 builder.Services 下,将 Configure 内的 UseCors 移至 app 构建后的中间件链中,逻辑完全一致。
内容的提问来源于stack exchange,提问作者Sinem Çalışkan
相关产品推荐
相关产品推荐

