我已经定义了一个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。