我正在尝试将我的 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/