Tenho uma aplicação Cordova 7.0.1 que faz uma requisição a um método de um site Asp.Net MVC Web API 4.6. Quando a chamada é feita no dispositivo, cordova run andoid, a execução do método retorna erro.
Se executo a chamada direto do browser, através de uma página HTML ou executar o App com run cordova browser, funciona.
O método do controller CategoriaApiController.cs é este:
public class CategoriaApiController : ApiController { private DBContext db = new DBContext(); [HttpGet] public string ListaCategorias(Categoria categoria) { var listaCategorias = (dynamic)null; try { listaCategorias = db.Categoria.OrderBy(x => x.Descricao).ToList(); return JsonConvert.SerializeObject(listaCategorias); //return "user-error"; } catch (Exception ex) { return JsonConvert.SerializeObject(listaCategorias); //return "user-error"; } } }
A classe WebApiConfig.cs:
public static class WebApiConfig { public static void Register(HttpConfiguration config) { EnableCrossSiteRequests(config); config.Routes.MapHttpRoute( name: "AppLogin", routeTemplate: "api/login/{controller}/{action}/{id}" ); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } private static void EnableCrossSiteRequests(HttpConfiguration config) { var cors = new EnableCorsAttribute( origins: "*", headers: "*", methods: "*"); config.EnableCors(cors); } }
E chamada ajax:
function chamaListaCategorias(){ // var categoria = new CategoriaController(); // categoria.ListaCategorias(); var url = BASE_URL + "api/CategoriaApi/ListaCategorias"; $ .ajax({ type: "GET", dataType: "json", success: function (data, status, jqXHR) { $ ("#res").html("Local success callback.<br>") ; $ ("#res").html(data); }, error: function (jqXHR, status, err) { $ ("#res").html("Local error callback." + err + ' --- ' + status + ' ---' + jqXHR); console.log(err); } }
Instalei o plugin whitelist que no meu entendimento era para configurar este tipo de acesso.
Tem alguma configuração no App ou no Site para permitir que esta requisição funcione?