EnableCorsAttribute 中缺少方法

Pep*_*epe 2 c# asp.net-web-api asp.net-core

我想从我的控制器启用 CORS 到 asp.net core 2 应用程序,因此在控制器中我添加如下属性:

[EnableCors(origins: "*", headers: "accept,content-type,origin,x-my-header", methods: "*")]
Run Code Online (Sandbox Code Playgroud)

但我在起源上遇到错误:

“EnableCorsAttribute”的最佳重载没有名为“origins”的参数

因此,我从元数据访问 EnableCorsAttribute 并找到了以下方法:

namespace Microsoft.AspNetCore.Cors
{

    public class EnableCorsAttribute : Attribute, IEnableCorsAttribute
    {
        public EnableCorsAttribute(string policyName);

        public string PolicyName { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

但假设它是这样的方法:

public EnableCorsAttribute(string origins, string headers, string methods);
Run Code Online (Sandbox Code Playgroud)

为什么我没有?我需要安装一些东西吗?我是 Asp.Net Core 的新手,我不明白为什么该方法不在我的 api 中。问候

Sev*_*us5 5

EnableCorsAttribute(string origins, string headers, string methods)包里没有这样的属性Microsoft.AspNetCore.Cors

在您的场景中,基于在 ASP.NET Core 中启用跨源请求 (CORS)
如果提供的 cors 配置适用于整个应用程序,则在您的ConfigureServices方法中添加 cors 服务:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
}
Run Code Online (Sandbox Code Playgroud)

然后Configure方法中的全局cors中间件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseCors(builder => builder
        .WithOrigins("https://my.web.com", "http://localhost:5001")
        .AllowAnyMethod()
        .AllowCredentials()
        .WithHeaders("Accept", "Content-Type", "Origin", "X-My-Header"));

    //code omitted
}
Run Code Online (Sandbox Code Playgroud)

替换("https://my.web.com", "http://localhost:5001")为您的来源。
如果您想要有多个 cors 配置,则在ConfigureServices方法中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("MyCorsPolicy", builder => builder
            .WithOrigins("https://my.web.com", "http://localhost:5001")
            .AllowAnyMethod()
            .AllowCredentials()
            .WithHeaders("Accept", "Content-Type", "Origin", "X-My-Header"));
    });
}
Run Code Online (Sandbox Code Playgroud)

Configure方法中:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseCors("MyCorsPolicy");

    //code omitted
}
Run Code Online (Sandbox Code Playgroud)

最后在控制器中:

[EnableCors("MyCorsPolicy")]
public class MyController : Controller
{ ... }
Run Code Online (Sandbox Code Playgroud)