2016-01-15 13 views
0

У меня есть чрезвычайно необычная проблема, которая только что появилась. Я пишу приложение Ionic с бэкэндом ASP.NET Web API. Я затрагивались вопросы предполетной CORS рано, добавив это регистрового метода моего класса WebApiConfig:Сбой перед полетом только один способ

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

При навигации на каждой странице, и делая различные $ http.get звонки, предварительно полет CORS является работая лакомство (ниже сетевой трафик берется из Chrome Developer Tools)

Example 1

Однако недавно я создал дополнительный метод в WebAPI:

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

Но запрос предполетной OPTIONS возвращается 404:

enter image description here

Это $ Код http.get:

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

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

Любые идеи, почему запрос OPTIONS потерпит неудачу лишь один метод, в то время как остальные работают отлично.

ответ

2

Он, похоже, не имеет ничего общего с предполетным запросом, это ваш маршрут. Вы получаете 404, что означает, что он не может найти запрошенный ресурс. Добавьте свой маршрут к маршруту.

[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

Спасибо за то, Стивен, кажется, работает в настоящее время, который является супер странно, как ни один из моих других HttpGet методов, которые проходят необходимы параметры, чтобы иметь параметр отражается в атрибуте маршрута, как это. Спасибо, в любом случае :) –