Web API 路由相互冲突

Web API Routes conflicting with each other

抱歉,如果之前有人问过这个问题,我可能搜索得不够好。

我正在使用属性路由。基本上我有
[Route("api/studies")] 这给了我一个类型研究列表。
[Route("api/studies/{id}/{detail?}")] 这给了我一个单一的研究。它有一个可选参数 detail,用于指定详细程度。
[Route("api/studies/{id}/subjects")] 这给了我一个研究科目列表。

问题是,当我测试 subjects 路由时,它调用 /api/studies/{id}/{detail?} 并将 "subjects" 作为 detail 参数传入。我完全理解为什么,我只是好奇是否有办法防止它。

好的伙计们,我明白了。首先,我没有给他们下达命令。我这样做了,仍然没有用。但是...对我的 post 并不完全诚实,我遗漏了一些我认为不相关的东西。主题有一堆可选参数,它们是整数,我认为这样输入就可以了:
public List<Subject> Subjects(long id, int? limit, int? offset)

显然这还不够好。需要是:
public List<Subject> Subjects(long id, int? limit = null, int? offset = null)

不知道我必须将它们指定为 null!