首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Web Asp.Net 6路由澄清

Web Asp.Net 6路由澄清
EN

Stack Overflow用户
提问于 2022-04-29 20:57:57
回答 2查看 4K关注 0票数 3

我在我的项目中使用Asp.net 6 web,我对理解路由函数感到困惑。以前,当我们构建API时,我们使用以下中间件

代码语言:javascript
运行
复制
app.UseRouting()

...Other middleware

app.UseEndPoints()

但是现在在Asp.Net 6中,默认的使用方法是

代码语言:javascript
运行
复制
    app.UseAuthentication();
    app.UseAuthorization();

    app.MapControllers()

不需要使用app.UseRouting()app.UseEndPoints(),而是在其他中间件之后直接使用app.MapControllers()

,我想知道app.MapControllers()在内部做什么?这是否意味着所有的路线都是由defualt授权的?

如何在注册路由之前使用其他中间件?我对这些方法的理解有些困惑。

代码语言:javascript
运行
复制
app.UseRouting() VS app.UseEndpoints() VS app.MapControllers();
EN

回答 2

Stack Overflow用户

发布于 2022-05-01 05:24:56

UseRouting:将请求与端点匹配。

UseEndpoints:执行匹配的端点。

MapControllers:这不会对路由做出任何假设,它将依赖于用户执行属性路由( WebAPI控制器中最常用的)来将请求发送到正确的位置。

这使得ASP.NET核心框架更加灵活,并允许其他中间件在UseRouting和UseEndpoints之间进行操作。这允许这些中间件利用来自端点路由的信息,例如,对UseAuthentication的调用必须在UseRouting之后进行,这样路由信息就可以用于身份验证决策,并且在UseEndpoints之前可以使用,以便在访问端点之前对用户进行身份验证。

票数 3
EN

Stack Overflow用户

发布于 2022-08-03 09:22:00

你还有几个问题要问。这是清单和我的答案。如有遗漏,请评论:

  1. app.MapControllers()在内部做什么? app.MapControllers()是一个用于映射属性路由的助手。app本身也是一个IEndpointRouteBuilder,此助手将从属性路由控制器中添加端点。要映射传统路由,请使用app.MapControllerRoute()
  2. 这是否意味着默认情况下所有路由都是经过授权的? 添加app.UseAuthorization();并不意味着路由没有“默认授权”,但管道将尝试确定是否可以授权当前用户访问此路由。
  3. 如何在注册路由之前使用其他中间件? 如果您指的是UseAuthentication()UseAuthorization(),则必须将它们放在UseRouting()之后和UseEndPoints()之前。您可以查看中间件订单以获得更多信息。
  4. 在这些方法( app.UseRouting() VS app.UseEndpoints() VS app.MapControllers();)之间,我有点困惑: UseRouting()UseEndpoints() (也包括MapGet()MapPost())用于手工定制路由以满足您的需要。如上所述,如果您在典型的Web场景中使用带有控制器的属性路由,那么MapControllers()是一个方便的助手。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72063619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档