내가 RateProduct 액션에 가까운 설명 무언가를 달성하고자하지만닷넷 WebApi 중 하나로, OData 조치
[HttpPost]
public int RateProduct([FromODataUri] int key, ODataActionParameters parameters)
{
// ...
}
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Product>("Products");
// New Code
ActionConfiguration rateProduct = modelBuilder.Entity<Product>().Action("RateProduct");
rateProduct.Parameter<int>("Rating");
rateProduct.Returns<int>();
, 내가 가지고있는 특정 반경 내에서 다른 위치를 반환 할만큼 똑똑한 위치 엔티티의 사례를 사용합니다. 그것은 대략 다음과 같이해야한다 :
[HttpPost]
public IQueryable<Location> GetLocationsWithinRadius([FromODataUri] int key, ODataActionParameters parameters)
{
// Get the Location instance intended to be the center of the radius by using the key
// Do a radius search around it using (int)parameters["radius"] as the radius
// return the IQueryable<Location> of all location found within that radius
}
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Location>("Locations");
// New Code
ActionConfiguration getLocations = modelBuilder.Entity<Location>().Action("GetLocationsWithinRadius");
getLocations.Parameter<int>("radius");
getLocations.Returns<IQueryable<Location>>();
내가이 일을하고 반환 형식이 IQueryable<Location>
때 현재 작동하지 않는 얻을 싶어요. 반환 형식이있는 int와 같은 원시적 인 경우 내가 피들러에 게시물을 작성할 때, 다음 작동, 그렇지 않으면 다음과 같은 오류를 제공합니다 (포스트는 http://localhost:2663/odata/Locations(2112)/GetLocationsWithinRadius
같은이며, 요청 기관은 {radius: 50}
입니다) :
{
"odata.error":{
"code":"","message":{
"lang":"en-US","value":"An error has occurred."
},"innererror":{
"message":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; odata=minimalmetadata; streaming=true; charset=utf-8'.","type":"System.InvalidOperationException","stacktrace":"","internalexception":{
"message":"The related entity set could not be found from the OData path. The related entity set is required to serialize the payload.","type":"System.Runtime.Serialization.SerializationException","stacktrace":" at System.Web.Http.OData.Formatter.Serialization.ODataFeedSerializer.WriteObject(Object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)\r\n at System.Web.Http.OData.Formatter.ODataMediaTypeFormatter.<>c__DisplayClassa.<WriteToStreamAsync>b__9()\r\n at System.Threading.Tasks.TaskHelpers.RunSynchronously(Action action, CancellationToken token)"
}
}
}
}
내가 성취하려는 일을 할 수 있습니까? 그리고 만약 그렇다면, 답장 된 IQueryable<Location>
이 odata paramaters와 구성 가능해 지는지 묻자. (좋을 것이다)?
감사합니다.
엔티티 세트 유형이 '제품'임을 확인했습니다. 이것이 Location입니까? 또한 더 자세한 오류 정보를 얻으실 수 있습니다. 그렇다면 공유 할 수 있습니까? 도움이 될 것입니다. 'config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always'를 실행하면 더 자세한 정보를 얻을 수 있습니다. –
예 - 방금 고쳤습니다 - 나쁘다. 손으로 복사하고 붙여 넣는 대신 코드를 작성했습니다. 또한 전체 오류를 표시하기 위해 게시물을 편집 중입니다. – t316