asp.net-core - 如何在我的 ASP.NET core WebApi 项目中全局启用 CORS

标签 asp.net-core asp.net-core-1.0 asp.net-core-webapi

我正在尝试将我的 Web Api2 迁移到 ASP.NET core Web api 项目。在我的项目中,我们使用 EnableCors 功能。

我在 Microsoft 网站上找到了此文档,我将其用作引用 - https://docs.asp.net/en/latest/security/cors.html

正如“在 MVC 中启用 CORS”部分中提到的,我尝试在像这样的配置服务方法中全局启用 cors -

services.Configure<MvcOptions>(options =>
            {
                options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
            });

但是,我收到了这个我无法理解的错误-

The call is ambiguous between the following methods or properties: 'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection, System.Action)' and 'Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection, System.Action)'

请参阅此处的错误屏幕截图 - ERROR scrrenshot

有人可以告诉我如何在我的 ASP.NET core WebApi 项目中全局启用 CORS 吗?

Project.json:

{
  "userSecretsId": "aspnet5-MVC6",
  "version": "1.4.0-*",
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "dependencies": {
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",

    "Microsoft.AspNet.Cors": "6.0.0-rc1-final",

    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dnxcore50"
      ],
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      }
    },
    "net461": {
      "dependencies": {
        "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final"
      }
    }
  },

  "publishOptions": {
    "exclude": [
      "**.user",
      "**.vspscc",
      "wwwroot",
      "node_modules"
    ]
  },

  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}

最佳答案

您混淆了依赖关系。

"Microsoft.AspNet.Cors": "6.0.0-rc1-final"

是一个非常旧的版本,导致您的解决方案加载了具有相同命名空间和类型的两个不同程序集,并且编译器不知道要使用哪一个。

更改为

"Microsoft.AspNetCore.Cors": "1.0.0"

所有 Microsoft.AspNet.* 软件包都非常旧,不应使用。它们都通过 RC2 重命名为 Microsoft.AspNetCore.*

关于asp.net-core - 如何在我的 ASP.NET core WebApi 项目中全局启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793950/

相关文章:

c# - Asp.Net Core - Identity SignInManager - 如何使用附加条件登录以便用户登录(例如 : ClientId, 用户名和密码))

c# - ASP.NET Core .NET 6 Preview 7 Windows 服务

asp.net-core - 如何在asp.net core 1.0中获取当前的url

c# - 在单元测试中模拟 IHttpContextAccessor

c# - 如何在 Startup.cs ASP.NET Core 中删除 WebDav

asp.net-mvc - 在 Azure 中使用哪个负载均衡器

asp.net-core - Microsoft Application Insights 是否支持 MVC 6 (.Net 5)

asp.net-core - 如何在 .Net Core 中将 App.config 更改为 json 配置文件

asp.net-core - VS 2015 使用 Kestrel 吗?

asp.net - ASP.NET Core 中的 HttpResponse.Filter 等效项