c# - 如何在没有端点的情况下使用属性路由?
问题描述
如何在 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 中?
解决方案
不管你不使用属性路由,你都必须使用端点。端点是到路由模板的映射。
当第一个 HTTP 请求进来时,端点路由中间件会将请求映射到端点。它将使用 App 启动时创建的 EndpointDataSource,使用它遍历查找所有可用的 Endpoint,并检查与其关联的路由和元数据,以找到最匹配的 Endpoint。
一旦选择了 Endpoint 实例,它将附加到请求的对象上,以便后续中间件可以使用它。
最后,在管道的末端,当 Endpoint 中间件运行时,它将执行与 Endpoint 关联的请求委托。此请求委托将触发和实例化选定的 Controller 和 Action 方法,并生成响应。最后,从中间件管道返回响应。
看看下面的流程图。
关于属性路由,提高了路由的自由度,也对restful api提供了很好的支持。
推荐阅读
- xml - 动态生成 XSD 时 XML 模式中根元素的定义不正确
- google-cloud-datastore - 使用 Google Cloud Datastore 和 Filter 请求问题
- icinga2 - Icinga2:在 db 中找不到通知历史记录
- r - 离散轴上刻度之间的自定义间距
- javascript - 使用 JQuery 选择给定父元素的子元素
- windows - 将桌面应用程序移植到支持 Microsoft 辅助功能的 64 位时出现问题
- javascript - 即使使用 html 或 css 在浏览器端完成设置,如何隐藏 Google 翻译器弹出窗口?
- xml - 如何使用 XSLT 获取项目符号黑色圆形而不是 html 代码
- python - 使用 europe-west1 时出现 Google Cloud Function Deploy 错误
- jquery - 提高 Ajax 请求性能以在 DataTable 中加载数百万条记录