启动时出现 OData v4 错误:找不到该段的资源 'Whatever'
OData v4 error on start-up: Resource not found for the segment 'Whatever'
我正在构建我的新 v4 服务并且一切顺利,直到我为新 model/entity 添加了一个新控制器并在启动站点进行测试运行时出现此错误。
控制器似乎编码正确,就像其他控制器一样。
The path template 'Customers' on the action 'GetFeed' in controller 'CustomersOData' is not a valid OData path template. Resource not found for the segment 'Customers'.
这到底是什么意思?
如果启动时发生这种情况,请检查您是否已在启动期间将 Customers 模型类型添加到模型构建器中。
builder.EntitySet<CustomerModel>("Customers");
听起来好像正在为新控制器枚举属性映射,但它无法将客户模型类型映射回实体集。
注意:Q/A我几乎立刻就想通了,但我在这里发帖是因为我可能会再次这样做而忘记我做错了什么!
此错误发生在Web API 属性路由场景中。当 运行 HttpConfiguration 的初始值设定项时,Web API 属性路由将检查所有找到的 ODataController 的所有 ODataRouteAttributes。
您提到错误发生在您添加新 Model/entity 之后,所以我猜您可能有两个 Edm 模型:
ModelA, ModelB
而 EntitySet "Customers" 仅在其中一个模型中,例如 ModelA。
此外,您可能有以下新添加模型的代码:
config.MapODataServiceRoute("...", "...", ModelB);
启动时,Web API 发现属性:
[ODataRoute("Customers")]
public IHttpActionResult Get()
{
...
}
但是,Web API 无法在 ModelB 中找到 "Customers" 实体集。
我认为你可以通过将所有内容放入一个模型来解决这个问题。
我正在构建我的新 v4 服务并且一切顺利,直到我为新 model/entity 添加了一个新控制器并在启动站点进行测试运行时出现此错误。
控制器似乎编码正确,就像其他控制器一样。
The path template 'Customers' on the action 'GetFeed' in controller 'CustomersOData' is not a valid OData path template. Resource not found for the segment 'Customers'.
这到底是什么意思?
如果启动时发生这种情况,请检查您是否已在启动期间将 Customers 模型类型添加到模型构建器中。
builder.EntitySet<CustomerModel>("Customers");
听起来好像正在为新控制器枚举属性映射,但它无法将客户模型类型映射回实体集。
注意:Q/A我几乎立刻就想通了,但我在这里发帖是因为我可能会再次这样做而忘记我做错了什么!
此错误发生在Web API 属性路由场景中。当 运行 HttpConfiguration 的初始值设定项时,Web API 属性路由将检查所有找到的 ODataController 的所有 ODataRouteAttributes。
您提到错误发生在您添加新 Model/entity 之后,所以我猜您可能有两个 Edm 模型:
ModelA, ModelB
而 EntitySet "Customers" 仅在其中一个模型中,例如 ModelA。
此外,您可能有以下新添加模型的代码:
config.MapODataServiceRoute("...", "...", ModelB);
启动时,Web API 发现属性:
[ODataRoute("Customers")]
public IHttpActionResult Get()
{
...
}
但是,Web API 无法在 ModelB 中找到 "Customers" 实体集。
我认为你可以通过将所有内容放入一个模型来解决这个问题。