启动时出现OData v4错误:找不到该段'无论'的资源

时间:2015-01-07 17:10:41

标签: c# asp.net-web-api odata asp.net-web-api-odata

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

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

  

路径模板'客户'关于行动' GetFeed'在控制器' CustomersOData'不是有效的OData路径模板。未找到该细分受众群的资源'客户'

这对地球意味着什么?

2 个答案:

答案 0 :(得分:4)

Web API属性路由方案中发生此错误。在运行HttpConfiguration的初始化程序时,Web API属性路由将检查所有找到的ODataControllers的所有ODataRouteAttribute。

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

ModelA, ModelB

和EntitySet"客户"仅在其中一个模型中,例如ModelA。

此外,您可能会为新添加的模型提供以下代码:

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

启动时,Web API会找到属性:

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

但是,Web API无法找到"客户"在ModelB中设置的实体。

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

答案 1 :(得分:2)

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

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

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

注意:Q / A我几乎立刻想出来了,但是我在这里发帖是因为我可能会再次这样做而忘记我做错了什么!