RoutePattern.RawText何时会为空?已注册端点场景探讨
RoutePattern.RawText 为空的合法场景
对于已注册的有效路由端点,RoutePattern.RawText为空的合法场景主要有以下几种:
无显式路由模板的约定式路由端点
当控制器或动作方法没有标注任何带路径的路由特性(比如[Route]、[HttpGet("{id}")]这类),完全依赖ASP.NET Core的约定式路由规则映射请求时,对应的端点RoutePattern.RawText会为空。比如一个仅靠默认路由匹配的空控制器动作,该属性就是null。显式配置空路径的端点
如果通过代码或特性显式设置了空字符串作为路由路径,比如:app.MapGet("", () => "Root response");或者在控制器上标注
[Route("")],这类端点的RoutePattern.RawText也会是空值——因为没有提供非空的原始路由模板字符串。部分特殊配置的内置端点
某些ASP.NET Core内置端点在特定配置下也会出现RawText为空的情况,比如将健康检查端点的路径手动设置为空字符串时,对应的端点就符合这种情况。
本质上,RoutePattern.RawText的作用是存储开发者显式定义的原始路由模板内容,如果一个端点没有对应的显式模板(不管是约定生成还是主动配置为空),这个属性就会返回null,这属于正常合法状态,不是路由配置错误。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

