HandlingOdata/entityset/key/navigation我们有一个基于ODataSamples-masterodata示例的DynamicEdmModelCreation项目的项目。我们设置一个路由约定来处理对这个特定控制器的所有请求:[HttpGet][EnableQuery]publicEdmEntityObjectCollectionGet(){...}[EnableQuery]publicIEdmEntityObjectGet(stringkey){...}我们尝试/odata/hotels->好!/odata/hotels(1)->好!/odata/Hotel(1)/Rooms->响应:找不到为模板“~/entityset/key/navigation”选择OData路径操作的路由约定。我们看到路由约定很好地处理请求并将其重定向到我们的控制器,但不执行任何方法。由公约是:publicclassMatchRoutingConventionService:IODataRoutingConvention{publicstringSelectAction(ODataPathodataPath,HttpControllerContextcontrollerContext,ILookupactionMap){returnnull;}publicstringSelectController(ODataPathodataPath,HttpRequestMessagerequest){return(odataPath.Segments.FirstOrDefault()isEntitySetPathSegment)?“HamdleAll”:空;我们认为问题可能出在WebApi中使用正确的方法来处理请求,因为我们使用的是通用签名IEdmEntityObjectGet(Stringkey)。在您的控制器中,只有两个名为Get(),Get(stringkey)。事实证明:/odata/Hotels无关紧要,因为请求可以按照约定路由到Get()方法。/odata/Hotels(1)因为请求可以按照惯例路由到Get(stringkey)。但是,您不会创建其他方法来响应其他请求,例如请求示例:/odata/Hotels(1)/RoomWebAPIODatacannotfindamethodinthecontrollerbecausethereisnomethodtorespondto~/entityset/key/navigation,所以会抛出上面的错误信息。我的尝试:您可以修改它以满足您的要求。希望对你有帮助。谢谢。Sam的以上是C#学习教程:处理Odata/entityset/key/navigation共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
