.NET 6 Web API如何在端点内部获取自身路由模板?
在.NET 6 Web API中获取端点的路由模板
当然可以直接获取到定义的路由模板,你之前尝试的两种方法都是拿到解析后的路由值或者实际请求路径,自然得不到原始模板。
正确的做法是通过HttpContext获取当前端点的元数据,从中提取RouteAttribute的模板:
// 在你的控制器方法内部 var endpoint = HttpContext.GetEndpoint(); var routeAttribute = endpoint?.Metadata.GetMetadata<RouteAttribute>(); var routeTemplate = routeAttribute?.Template ?? string.Empty; // 此时routeTemplate的值就是你定义的"~/api/controller/action/{parameter}"
补充说明
- 如果你的端点是用
[HttpGet("template")]这种直接在Http方法特性里定义的路由,需要提取HttpGetAttribute的Template属性,逻辑类似:var httpGetAttribute = endpoint?.Metadata.GetMetadata<HttpGetAttribute>(); var httpGetTemplate = httpGetAttribute?.Template ?? string.Empty; - 记得做空值判断,避免在端点未正确匹配时出现空引用异常。
内容的提问来源于stack exchange,提问作者penguin178
相关产品推荐
相关产品推荐

