我在我的项目中使用Asp.net 6 web,我对理解路由函数感到困惑。以前,当我们构建API时,我们使用以下中间件
app.UseRouting()
...Other middleware
app.UseEndPoints()但是现在在Asp.Net 6中,默认的使用方法是
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers()不需要使用app.UseRouting()和app.UseEndPoints(),而是在其他中间件之后直接使用app.MapControllers()
,我想知道app.MapControllers()在内部做什么?这是否意味着所有的路线都是由defualt授权的?
如何在注册路由之前使用其他中间件?我对这些方法的理解有些困惑。
app.UseRouting() VS app.UseEndpoints() VS app.MapControllers();发布于 2022-05-01 05:24:56
UseRouting:将请求与端点匹配。
UseEndpoints:执行匹配的端点。
MapControllers:这不会对路由做出任何假设,它将依赖于用户执行属性路由( WebAPI控制器中最常用的)来将请求发送到正确的位置。
这使得ASP.NET核心框架更加灵活,并允许其他中间件在UseRouting和UseEndpoints之间进行操作。这允许这些中间件利用来自端点路由的信息,例如,对UseAuthentication的调用必须在UseRouting之后进行,这样路由信息就可以用于身份验证决策,并且在UseEndpoints之前可以使用,以便在访问端点之前对用户进行身份验证。
发布于 2022-08-03 09:22:00
你还有几个问题要问。这是清单和我的答案。如有遗漏,请评论:
app.MapControllers()是一个用于映射属性路由的助手。app本身也是一个IEndpointRouteBuilder,此助手将从属性路由控制器中添加端点。要映射传统路由,请使用app.MapControllerRoute()。app.UseAuthorization();并不意味着路由没有“默认授权”,但管道将尝试确定是否可以授权当前用户访问此路由。UseAuthentication()和UseAuthorization(),则必须将它们放在UseRouting()之后和UseEndPoints()之前。您可以查看中间件订单以获得更多信息。app.UseRouting() VS app.UseEndpoints() VS app.MapControllers();)之间,我有点困惑:
UseRouting()和UseEndpoints() (也包括MapGet()和MapPost())用于手工定制路由以满足您的需要。如上所述,如果您在典型的Web场景中使用带有控制器的属性路由,那么MapControllers()是一个方便的助手。https://stackoverflow.com/questions/72063619
复制相似问题