$ Метаданные с маршрутизацией атрибута OData WebAPi не работают
Я использую маршрутизацию атрибутов OData для конечной точки OData. Вот пример того, что у меня есть:
[ODataRoutePrefix("Profile")]
public class ProfileODataController : ODataController
{
[ODataRoute]
[EnableQuery]
public IHttpActionResult Get()
{
var repo = new Repositories.ProfileRepository();
return Ok(repo.GetProfiles());
}
[ODataRoute("({key})")]
[EnableQuery]
public IHttpActionResult Get([FromODataUri] string key)
{
var repo = new Repositories.ProfileRepository();
var result = repo.GetProfiles().SingleOrDefault(x => x.Id== key);
if (result == null) return NotFound();
return Ok(result);
}
}
Вот мои настройки:
config.MapODataServiceRoute("odata", "odata", ModelGenerator.GetEdmModel());
Вот мое поколение EdmModel:
public static IEdmModel GenerateEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Profile>("Profile").EntityType.HasKey(x => x.Id);
return builder.GetEdmModel();
}
URL/odata/Profile
а также/odata/Profile('someid')
оба работают, но когда я пытаюсь получить доступ к конечной точке $ metadata (/odata/$metadata#Profile
), Я получаю следующую ошибку:
{"Message": "Не найден ресурс HTTP, соответствующий URI запроса 'http: //****/odata/$metadata'.","MessageDetail":"Нет найден тип, соответствующий контроллеру с именем «Метаданные». "}
Нужно ли создаватьконтроллер / действие для обслуживания метаданных? Если да, то как осуществляется это действие?