首页 > 解决方案 > 如何在没有端点的情况下使用属性路由?

问题描述

如何在 Home Controller 中使用属性路由,例如

[Route("")]
[Route("Home")]
[Route("Home/Index")]
public IActionResult Index()
{
     return View();
}

进入主页但没有

 app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });

在 Startup.cs 中?

标签: c#.netmodel-view-controller

解决方案


不管你不使用属性路由,你都必须使用端点。端点是到路由模板的映射。

当第一个 HTTP 请求进来时,端点路由中间件会将请求映射到端点。它将使用 App 启动时创建的 EndpointDataSource,使用它遍历查找所有可用的 Endpoint,并检查与其关联的路由和元数据,以找到最匹配的 Endpoint。

一旦选择了 Endpoint 实例,它将附加到请求的对象上,以便后续中间件可以使用它。

最后,在管道的末端,当 Endpoint 中间件运行时,它将执行与 Endpoint 关联的请求委托。此请求委托将触发和实例化选定的 Controller 和 Action 方法,并生成响应。最后,从中间件管道返回响应。

看看下面的流程图。

在此处输入图像描述

关于属性路由,提高了路由的自由度,也对restful api提供了很好的支持。


推荐阅读