Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在我的ASP.NET核心WebApi项目中全局启用CORS_Asp.net Core_Asp.net Core 1.0_Asp.net Core Webapi - Fatal编程技术网

Asp.net core 如何在我的ASP.NET核心WebApi项目中全局启用CORS

Asp.net core 如何在我的ASP.NET核心WebApi项目中全局启用CORS,asp.net-core,asp.net-core-1.0,asp.net-core-webapi,Asp.net Core,Asp.net Core 1.0,Asp.net Core Webapi,我正在尝试将Web api 2迁移到ASP.NET核心Web api项目。在我的项目中,我们使用EnableCors特性 我在Microsoft网站上找到了此文档,并将其用作参考- 正如“在MVC中启用CORS”一节中提到的,我正在尝试在ConfigureServices中全局启用CORS,方法如下- services.Configure<MvcOptions>(options => { options.Filters.A

我正在尝试将Web api 2迁移到ASP.NET核心Web api项目。在我的项目中,我们使用EnableCors特性

我在Microsoft网站上找到了此文档,并将其用作参考-

正如“在MVC中启用CORS”一节中提到的,我正在尝试在ConfigureServices中全局启用CORS,方法如下-

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

您混淆了依赖项

“Microsoft.AspNet.Cors”:“6.0.0-rc1-final”

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

换成

Microsoft.AspNetCore.Cors:“1.0.0”

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

Asp.Net文档说明: 要为应用程序设置CORS,请将Microsoft.AspNetCore.CORS包添加到项目中。 在Startup.cs中添加CORS服务:

public void ConfigureServices(IServiceCollection services)
{
      services.AddCors();
}
要为整个应用程序启用CORS,请使用
UseCors
扩展方法。请注意,CORS中间件必须位于应用程序中要支持跨源请求的任何已定义端点之前(例如,在调用
UseMvc
之前)

您可以在使用CorsPolicyBuilder类添加CORS中间件时指定跨源策略。使用lambda调用UseCors:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
     loggerFactory.AddConsole();
     if (env.IsDevelopment())
     {
        app.UseDeveloperExceptionPage();
     }
     // Shows UseCors with CorsPolicyBuilder.
     app.UseCors(builder =>
     builder.WithOrigins("http://example.com").AllowAnyMethod().AllowAnyHeader());
     app.Run(async (context) =>
     {
          await context.Response.WriteAsync("Hello World!");
     });
 }

我怀疑你搞混了。发布您的project.json后,您的一个依赖项可能正在获取过时/不同版本的选项library@Tseng添加了project.jsonTold ya,
“Microsoft.AspNet.Cors”:“6.0.0-rc1-final”这是一个过时的包“Microsoft.AspNetCore.Cors”:“1.0.0”是正确的,我没有意识到……我指的是旧文档。谢谢:)我可以参考正确的文档步骤在我的ASP.NET core WebApi项目中全局启用cors吗?Api应该自rc1以来保持不变,但您可以始终查看github示例或类似示例。在这种情况下,请使用常识或查看使用的示例,即此处的music store示例:。事实上,您甚至不需要显式添加依赖项,因为它已经被
Microsoft.AspNetCore.Mvc
package Hi@Tseng引用了。我已经在webapi中全局启用了CORS。在startup-
services.AddCors(options=>{options.AddPolicy(“AllowSpecificOrigin”,builder=>builder.WithOrigins()http://localhost:3000"));             });并用
[EnableCors(“allowSpecificCorigin”)]
属性标记控制器。当我从Angular2应用程序发送GET请求时,它可以正常工作,但POST不能。我在这里遗漏了什么吗?POST请求抛出此错误-
对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源'http://localhost:3000因此,不允许访问。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
     loggerFactory.AddConsole();
     if (env.IsDevelopment())
     {
        app.UseDeveloperExceptionPage();
     }
     // Shows UseCors with CorsPolicyBuilder.
     app.UseCors(builder =>
     builder.WithOrigins("http://example.com").AllowAnyMethod().AllowAnyHeader());
     app.Run(async (context) =>
     {
          await context.Response.WriteAsync("Hello World!");
     });
 }