添加Route特性后OData端点出现方法/路径冲突的问题排查
问题原因分析
当你给WeatherForecastController添加[Route("[controller]")]特性后,出现Swagger冲突错误的核心原因是OData自动路由与手动属性路由产生了重复映射:
- OData会基于你在EDM模型中定义的
EntitySet<WeatherForecast>("WeatherForecast"),自动生成指向该控制器Get方法的路由GET WeatherForecast。 - 同时,手动添加的
[Route("[controller]")]结合控制器上的[HttpGet]特性,又生成了一条完全相同的GET WeatherForecast路由规则。
Swagger生成OpenAPI文档时,要求每个操作的方法+路径组合必须唯一。现在同一个Get方法被两条路由规则映射,Swagger会把它们识别成两个重复的操作,因此抛出"Conflicting method/path combination"错误。
而移除控制器上的[Route]特性后,只有OData自动生成的路由生效,Swagger只识别到一个唯一的GET WeatherForecast操作,自然就不会报错了。
内容的提问来源于stack exchange,提问作者Mrityu
相关产品推荐
相关产品推荐

