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

.NET 9 Aspire集成Swagger/OpenAI遇CORS错误,求解决方案

Aspire环境下Swagger CORS错误解决方法

1. 配置API项目的CORS策略

在API项目的Program.cs中,添加包含Swagger UI和Scalar来源的CORS规则:

// 添加CORS服务
builder.Services.AddCors(options =>
{
    options.AddPolicy("DevCorsPolicy", policy =>
    {
        // 替换为你实际的Swagger UI和Scalar运行地址
        policy.WithOrigins(
            "http://localhost:5000",
            "https://localhost:5001",
            "http://localhost:5050" // Scalar默认本地端口
        )
        .AllowAnyHeader()
        .AllowAnyMethod();

        // 开发环境临时测试可使用(生产环境禁用):
        // policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
    });
});

// 中间件管道中启用CORS(注意顺序)
app.UseRouting();
app.UseCors("DevCorsPolicy"); // 必须在UseAuthorization之前
app.UseAuthorization();
app.MapControllers();

2. 验证Swagger UI路由配置

确保Swagger UI指向正确的API文档端点,若Aspire编排时为API设置了路由前缀,需同步调整:

app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "OpenAI Integration API V1");
});

3. Aspire主机端口一致性检查

在AppHost项目中,确认API服务的端口与CORS策略中配置的来源端口一致:

var builder = DistributedApplication.CreateBuilder(args);

var api = builder.AddProject<Projects.OpenAI_Api>("openai-api")
    .WithEndpoint(hostPort: 5000, containerPort: 8080); // 对应CORS中的localhost:5000

builder.Build().Run();

Scalar请求无错误信息排查步骤
  • 查看浏览器网络日志:按F12打开开发者工具,切换到「网络」标签,重新发起请求,查看请求的状态码、响应头及跨域相关错误提示。
  • 确认Swagger文档可访问:直接访问API的/swagger/v1/swagger.json端点,确保文档能正常返回。
  • 验证Scalar目标地址:检查Scalar配置中填写的API地址是否正确,是否包含正确的端口和路由前缀。
  • 临时放宽CORS测试:若开发环境使用AllowAnyOrigin()后请求正常,说明是CORS来源未覆盖Scalar地址,补充对应地址即可。

内容的提问来源于stack exchange,提问作者Douglas Marquardt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:07:06