2016-05-28 3 views
1

У меня есть моя установка WebApiConfig так:Веб-сайт Api не подходит к действию?

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

Я зарегистрировал маршрут в Global.asax следующим образом:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     WebApiConfig.Register(GlobalConfiguration.Configuration); 
    } 

Мой веб-класс контроллера апи выглядит следующим образом:

[RoutePrefix("api/upload")] 
public class UploadController : ApiController 
{ 
    [HttpGet] 
    [Route("")] 
    public string Upload() 
    { 
     return "hello"; 
    } 
} 

Я делаю звонок в веб-приложение Api в скрипаче, как показано на рисунке ниже:

enter image description here

Я получаю 404 Not Found не найдена ошибка при отправке запроса. Что я делаю не так?

+0

Это ошибка перекрестного происхождения запроса? – Pushpendra

+0

№. Запрос выполняется в том же домене, на котором запущен сервер IIS. –

+0

Вы используете экземпляр службы во время звонка? – Pushpendra

ответ

2

Попробуйте настроить Web API перед тем отображения маршрута MVC:

protected void Application_Start() 
{ 
    WebApiConfig.Register(GlobalConfiguration.Configuration); 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

То, что я считаю, что происходит в том, что структура пытается отобразить маршрут к MVC один. Предполагается, что этот URI localhost:8170/api/upload относится к контроллеру MVC под названием Api с действием с именем Upload.

Регистрация маршрутов веб-API до MVC позволит фреймворку соответствовать маршрутам, начинающимся с api/, до правильного ApiController.

Смежные вопросы