9

我正在构建我的新 v4 服务,一切进展顺利,直到我为新模型/实体添加了一个新控制器,并在启动站点进行测试运行时出现此错误。

控制器似乎编码正确,就像其他控制器一样。

控制器“CustomersOData”中操作“GetFeed”的路径模板“客户”不是有效的 OData 路径模板。未找到“客户”部分的资源。

这到底是什么意思?

4

2 回答 2

4

此错误发生在 Web API 属性路由场景中。Web API 属性路由将在运行 HttpConfiguration 的初始化程序时检查所有找到的 ODataController 的所有 ODataRouteAttributes。

您提到添加新模型/实体后发生错误,所以我猜您可能有两个 Edm 模型:

ModelA, ModelB

而EntitySet“Customers”只存在于其中一个模型中,例如ModelA。

此外,新添加的模型可能有以下代码:

config.MapODataServiceRoute("...", "...", ModelB);

启动时,Web API 找到属性:

[ODataRoute("Customers")]
public IHttpActionResult Get()
{
 ...
}

但是,Web API 找不到 ModelB 中设置的“客户”实体。

我认为您可以通过将所有内容放入一个模型中来解决它。

于 2015-01-08T06:50:10.477 回答
3

如果这发生在启动时,请检查您是否已在启动期间将您的客户模型类型添加到模型构建器中。

builder.EntitySet<CustomerModel>("Customers");

听起来好像正在为新控制器枚举属性映射,但它无法将 Customer 模型类型映射回实体集。

注意:Q/AI 几乎立刻就发现了这一点,但我在这里发帖是因为我可能会再次这样做并忘记我做错了什么!

于 2015-01-07T17:10:40.837 回答