Web API 2.2'de bir OData 3 hizmeti yapıyorum.ODataController HTTP döndürüyor256 Kabul Edilemiyor
Hizmet, varlıklarım için meta verileri doğru bir şekilde döndürüyor, ancak gerçek varlıklardan birini sorguladığımda 406 Not Available
değerini döndürüyor. Oldukça fazla araştırma yaptım (şu anda birkaç dersi takip ediyorum), ama aslında işe yarayan hiçbir şey bulamadım.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.OData.Builder;
using System.Web.OData.Extensions;
namespace MyProject
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<MarvelCharacter>("MarvelCharacters");
config.MapODataServiceRoute(
routeName: "Marvel",
routePrefix: "dude",
model: builder.GetEdmModel());
}
}
}
Ve kontrolör (tam değil, ama fikir olsun): Burada
benim WebApiConfig varusing System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.OData;
using System.Web.Http.OData.Query;
using Microsoft.Data.OData;
using MyProject;
namespace MyProject.Controllers
{
public class MarvelCharactersController : ODataController
{
private static ODataValidationSettings _validationSettings = new ODataValidationSettings();
// GET: odata/MarvelCharacters
public IHttpActionResult GetMarvelCharacters(ODataQueryOptions<MarvelCharacter> queryOptions)
{
// validate the query.
try
{
queryOptions.Validate(_validationSettings);
}
catch (ODataException ex)
{
return BadRequest(ex.Message);
}
var entities = new myEntities();
var marvelCharacters = (from c in entities.MarvelCharacters select c).ToList();
return Ok<IEnumerable<MarvelCharacter>>(marvelCharacters);
}
}
}
Microsoft'un gerçekten de 'OdataV3' ve 'OdataV4' adlarında yeni sürümleri takmak yerine kullanmış olmasını diliyorum ve buradaki takma adlar için nilly +1 - harika bir fikir – bkwdesign
Aynı sorunu yaşıyorum oData v3 ile ilk kurulum ve daha sonra oData v4'e taşındı ve V4 ile oluşturulan denetleyiciler 406 hatası vermeye başladı. Sorunu doğrulamak için tekrar V3 ile bir kontrolör oluşturduk ve evet çalışmaya başlıyor. Şimdi herkes için V4'e geçiyorum. – Zafar
Çok teşekkür ederim! –