2016-01-15 2 views
0

J'ai un problème extrêmement inhabituel qui vient de surgir. J'écris une application Ionic avec un backend d'API Web ASP.NET. J'ai abordé les questions CORS prévol tôt, en ajoutant ceci à la méthode de registre de ma classe WebApiConfig:CORS Pré-vol échouer une seule méthode

config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 

Lorsque vous naviguez chaque page, et d'effectuer différents appels http.get $, le pré-vol CORS est travailler un régal (ci-dessous est le trafic réseau provenant des outils de développement Chrome)

Example 1

Cependant j'ai récemment créé une méthode supplémentaire WebAPI:

[Authorize] 
    [Route("api/GetJobType")] 
    public IHttpActionResult GetJobType(int? id) 
    { 
     var model = new JobsModel(); 
     return this.Ok(model.GetJobType(id.Value)); 
    } 

Mais la demande OPTIONS prévol retourne 404:

enter image description here

Voici le code http.get $:

var url = ApiEndpoint.url + '/GetJobType/' + jobId; 
    $http.get(url).then(function(resp) { 
     alert(resp.data); 

    }, function(err) { 
     alert(err); 
    }); 

Toutes les idées pourquoi la demande OPTIONS échouerait pour une seule méthode, tandis que le reste fonctionne parfaitement.

Répondre

2

Cela ne semble pas avoir à voir avec la demande de pré-vol, c'est votre route. Vous obtenez un 404, ce qui signifie qu'il ne peut pas trouver la ressource demandée. Ajoutez votre paramètre à l'itinéraire.

[Authorize] 
[HttpGet, Route("api/GetJobType/{id}")] 
public IHttpActionResult GetJobType(int? id) 
{ 
    try 
    { 
    var model = new JobsModel(); 
    return Ok(model.GetJobType(id.Value)); 
    } 
    catch 
    { 
    return InternalServerError(); 
    } 
} 
+0

Merci pour que Stephen, il semble fonctionner maintenant qui est super bizarre comme aucun de mes autres HttpGet méthodes qui passent paramètres ont besoin d'avoir le paramètre reflété dans l'attribut d'itinéraire comme ça. Merci quand même :) –