Abh*_*eet 1 c# cors asp.net-core
第一个MVC中间件或Cors中间件。
services.AddMvc()
services.AddCors();
Run Code Online (Sandbox Code Playgroud)
抱歉,上面提到了官方文档,但是我也看到了其他具有相反顺序的示例,它们也可以正常工作。
您能否对内部工作原理一目了然?
在内部注册服务时ConfigureServices,调用AddX()方法的顺序通常无关紧要。因此,您可以按照最有意义的方式对它们进行排序和逻辑分组。
如果存在多个相同类型的服务注册,那么该顺序实际上是唯一重要的,在这种情况下,最新的注册将获胜。默认框架部分通常不是以这种方式构建的。实际上,它们的构建方式是可以多次调用而不会出现问题。当您以后想要重新配置某些服务时,此功能特别有用。
对于AddMvc()和AddCors(),这两种方法都将注册一组单独的服务,因此在调用一个方法之前比调用另一个方法确实没有区别。
注意,实际上也AddMvc()没有AddCors()设置任何中间件。他们只是准备中间件运行所需的必要服务。中间件在Configure方法内部配置。
app.UseX()该中间件在配置Configure有在您注册的每个中间件的顺序做的事情。
中间件是按您注册顺序运行的链式管道:

为了使一个中间件影响另一种中间件,它将需要围绕该另一种中间件执行。因此,在您的情况下,由于要为MVC中间件启用CORS,以便可以从其他来源正确请求MVC中的路由,因此需要在MVC中间件之前注册CORS 中间件。
您还可以看一下CORS中间件的实现。如您所见next(),对它的调用位于其末尾,因此这意味着CORS中间件的相关逻辑在执行下一个中间件之前就已运行。这是一个好消息,它需要首先运行。
因此正确的顺序是:
app.UseCors();
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)
通常,MVC中间件几乎总是应该排在最后。
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |