没有找到路由约定来为OData路径选择一个动作,其中包含模板'〜/ entityset / key / unresolved'

时间:2017-09-06 20:29:03

标签: c# asp.net-web-api2 odata-v4

我已经定义了一个OData函数,如下所示:

var function = builder.EntityType<User>().Function("GetContacts").ReturnsCollectionFromEntitySet<Contact>("Contacts");

然后我在UsersController上定义了一个方法,如下所示:

[HttpGet]
[ODataRoute("Users({key})/Default.GetContacts()")]
public IHttpActionResult GetContacts([FromODataUri]Guid key)
{
    return Ok();
}

尝试从客户端访问此内容时:

http://localhost/odata/Users(874C0BC3-6D9B-4DFA-B42C-8403FE1B281D)/GetContacts

控制器命中但方法不是,而是在邮递员中我得到一个异常&#34;没有找到路由约定来为OData路径选择一个带有模板&#39;〜/ entityset的操作/键/悬而未决&#39;&#34;

我试过了:

http://localhost/odata/Users(874C0BC3-6D9B-4DFA-B42C-8403FE1B281D)/GetContacts()

我已经删除了ODataRouteAttribute的显式设置,并依赖于内置的路由约定,但仍然没有运气。

我还尝试删除&#34;默认。&#34;从ODataRouteAttribute但是这在尝试启动应用程序时引发服务器错误&#34;找到一个未解决的路径段&#39; GetContacts()&#39;在OData路径模板&#39;用户({key})/ GetContacts()&#39;。&#34;

有人知道我做错了什么吗?或者有没有办法让我调试这些类型的路由问题,以便我自己解决问题?

感谢您提供的任何帮助。

P.S。我正在使用OData v4。

0 个答案:

没有答案