C# 将CORS添加到.Net核心中的正确顺序是什么?
第一个MVC中间件或Cors中间件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
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哦,对不起,我完全错过了这一部分,因为您在问题中谈到了“中间件”我在回答中添加了一部分,其中明确谈到了服务注册:)