ODataRoutePrefix 不适用于第三级
ODataRoutePrefix not working for 3rd level
当我尝试使用具有 [ODataRoutePrefix]
属性的第三级细分时,它会抛出如下错误:
控制器 'CONTROLLER-NAME' 中操作 'Get' 的路径模板“[TEMPLATE]”不是有效的 OData 路径模板。在 OData 路径模板“[TEMPLATE]”中找到未解析的路径段“[LAST-SEGMENT]”。
详情
- 有效父段的 ODataRoutePrefix:
[ODataRoutePrefix("lawsuits/{parentId}/depositsGuarantees")]
- 新控制器的 ODataRoutePrefix 不起作用:
[ODataRoutePrefix("lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields")]
- 启动 API (
config.EnsureInitialized()
) 时的错误消息:
控制器 'LawsuitDepositGuaranteeCustomFields' 中操作 'Get' 的路径模板 'lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields' 不是有效的 OData 路径模板。在 OData 路径模板 'lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields'. 中找到未解析的路径段 'customFields'
附加信息
- 操作方法正确地期望路由前缀中定义的参数。示例:
public IHttpActionResult Get(int parentId, int subResourceId)
{
// [...]
}
- 尽管它抱怨 "Found an unresolved path segment 'customFields'",但同一段适用于具有如下前缀的其他现有控制器:
[ODataRoutePrefix("lawsuits/{parentId}/customFields")]
,这意味着在 OData 上注册了一个模型 "customFields"段。
受影响的程序集
OData WebApi 库 6.0.0
我找到问题所在了...
depositsGuarantees
段的 model 缺少为 model 注册的集合 属性 customFields
段。实际上这个属性不见了:
public IEnumerable<CustomFieldModel> CustomFields { get; set; }
我仍然想知道我是否真的应该使用 lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields
或只是 depositsGuarantees/{parentId}/customFields
(尽管 depositsGuarantees
也是一个 sub-resource),但这更像是一个概念性的讨论.
当我尝试使用具有 [ODataRoutePrefix]
属性的第三级细分时,它会抛出如下错误:
控制器 'CONTROLLER-NAME' 中操作 'Get' 的路径模板“[TEMPLATE]”不是有效的 OData 路径模板。在 OData 路径模板“[TEMPLATE]”中找到未解析的路径段“[LAST-SEGMENT]”。
详情
- 有效父段的 ODataRoutePrefix:
[ODataRoutePrefix("lawsuits/{parentId}/depositsGuarantees")]
- 新控制器的 ODataRoutePrefix 不起作用:
[ODataRoutePrefix("lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields")]
- 启动 API (
config.EnsureInitialized()
) 时的错误消息: 控制器 'LawsuitDepositGuaranteeCustomFields' 中操作 'Get' 的路径模板 'lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields' 不是有效的 OData 路径模板。在 OData 路径模板 'lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields'. 中找到未解析的路径段 'customFields'
附加信息
- 操作方法正确地期望路由前缀中定义的参数。示例:
public IHttpActionResult Get(int parentId, int subResourceId)
{
// [...]
}
- 尽管它抱怨 "Found an unresolved path segment 'customFields'",但同一段适用于具有如下前缀的其他现有控制器:
[ODataRoutePrefix("lawsuits/{parentId}/customFields")]
,这意味着在 OData 上注册了一个模型 "customFields"段。
受影响的程序集
OData WebApi 库 6.0.0
我找到问题所在了...
depositsGuarantees
段的 model 缺少为 model 注册的集合 属性 customFields
段。实际上这个属性不见了:
public IEnumerable<CustomFieldModel> CustomFields { get; set; }
我仍然想知道我是否真的应该使用 lawsuits/{parentId}/depositsGuarantees/{subResourceId}/customFields
或只是 depositsGuarantees/{parentId}/customFields
(尽管 depositsGuarantees
也是一个 sub-resource),但这更像是一个概念性的讨论.