Retorno WebAPI e ODataController 406 não aceitável
Antes de adicionar o OData ao meu projeto, minhas rotas foram configuradas assim:
config.Routes.MapHttpRoute(
name: "ApiById",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" },
handler: sessionHandler
);
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "Get" },
constraints: null,
handler: sessionHandler
);
config.Routes.MapHttpRoute(
name: "ApiByIdAction",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" },
handler: sessionHandler
Todos os controladores fornecem Get, Put (o nome da ação é Create), Patch (o nome da ação é Update) e Delete. Como exemplo, o cliente usa esses vários URLs padrão para as solicitações de CustomerType:
string getUrl = "api/CustomerType/{0}";
string findUrl = "api/CustomerType/Find?param={0}";
string createUrl = "api/CustomerType/Create";
string updateUrl = "api/CustomerType/Update";
string deleteUrl = "api/CustomerType/{0}/Delete";
Em seguida, adicionei um controlador OData com os mesmos nomes de ação que meus outros controladores API. Eu também adicionei uma nova rota:
ODataConfig odataConfig = new ODataConfig();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: odataConfig.GetEdmModel()
);
Até agora, não mudei nada no lado do cliente. Quando envio uma solicitação, recebo um erro 406 Não disponível.
As rotas estão se misturando? Como posso resolver isso?