$ Metadados com o roteamento de atributo ODAP WebAPi não funcionando
Estou usando o roteamento de atributo OData para um terminal OData. Aqui está um exemplo do que eu tenho:
[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);
}
}
Aqui está a minha configuração:
config.MapODataServiceRoute("odata", "odata", ModelGenerator.GetEdmModel());
Aqui está minha geração do EdmModel:
public static IEdmModel GenerateEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Profile>("Profile").EntityType.HasKey(x => x.Id);
return builder.GetEdmModel();
}
Os URLs/odata/Profile
e/odata/Profile('someid')
ambos funcionam, mas quando tento acessar o terminal $ metadata (/odata/$metadata#Profile
), Estou tendo o erro a seguir:
{"Message": "Nenhum recurso HTTP foi encontrado que corresponda ao URI da solicitação 'http: //****/odata/$metadata'.","MessageDetail":" Nenhum tipo foi encontrado que corresponda ao controlador chamado 'Metadados'. "}
Preciso criar umcontrolador / ação para veicular os metadados? Em caso afirmativo, como essa ação é implementada?