C# 将CORS添加到.Net核心中的正确顺序是什么?

C# 将CORS添加到.Net核心中的正确顺序是什么?,c#,asp.net-core,cors,C#,Asp.net Core,Cors,第一个MVC中间件或Cors中间件 services.AddMvc() services.AddCors(); 对不起,上面提到的官方文件,不过我也看到过其他反向顺序的例子 你能分享一下它的工作原理吗 不,正好相反。您应该先添加CORS中间件,然后再添加MVC中间件,如下所示。从 使用它的时候也是如此 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseCors

第一个MVC中间件或Cors中间件

    services.AddMvc()
    services.AddCors();
对不起,上面提到的官方文件,不过我也看到过其他反向顺序的例子

你能分享一下它的工作原理吗


不,正好相反。您应该先添加CORS中间件,然后再添加MVC中间件,如下所示。从

使用它的时候也是如此

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseCors(MyAllowSpecificOrigins); 
    app.UseMvc();
}
如果你仔细阅读链接的文档,就会清楚地看到

注:

必须在
UseMvc
之前调用
UseCors

使用AddX()的服务 在
ConfigureServices
中注册服务时,调用
AddX()
方法的顺序通常并不重要。因此,您可以按照最合理的方式对它们进行排序和逻辑分组

如果存在多个相同类型的服务注册,那么订单实际起作用的唯一方式是,在这种情况下,最新的注册将获胜。不过,默认框架部件通常不是以这种方式构建的。相反,它们实际上是以一种可以被多次调用而不会出现问题的方式构建的。这在以后要重新配置某些服务时特别有用

对于
AddMvc()
AddCors()
,这两种方法都将注册一组单独的服务,因此在调用其中一个之前调用另一个时实际上没有区别

请注意,无论是
AddMvc()
还是
AddCors()
都没有实际设置任何中间件。他们只是准备中间软件运行所需的必要服务。中间件在
Configure
方法中配置

使用
app.UseX()的中间件
在
Configure
中配置,注册每个中间件的顺序很重要

中间件是一个链式管道,按照注册顺序运行:

为了让一个中间件影响另一个中间件,它需要围绕另一个中间件执行。因此,在您的情况下,由于您希望为MVC中间件启用CORS,以便可以从其他来源正确地请求MVC内的路由,因此您需要在MVC中间件之前注册CORS中间件

    services.AddMvc()
    services.AddCors();
你也可以看一下。正如您所看到的,对
next()
的调用就在它的末尾,这意味着CORS中间件的相关逻辑在执行下一个中间件之前运行。这是一个好迹象,它需要先运行

因此,正确的顺序是:

app.UseCors();
app.UseMvc();

一般来说,MVC中间件几乎总是排在最后。

我要求的是
services.AddMvc()services.AddCors()但是感谢您解释
app.UseCors();app.UseMvc()
拇指规则是否作为一般规则,MVC中间件几乎总是排在最后。
适用于
应用程序。使用***
服务。添加***
请?简而言之,使用***订购事宜或添加***中间件执行/配置事宜请。@Abhijeet哦,对不起,我完全错过了这一部分,因为您在问题中谈到了“中间件”我在回答中添加了一部分,其中明确谈到了服务注册:)