Ошибка 404, попробовав делать httpget в Action controller webapi

Добавил один controller webapi, IDE берется за то, чтобы производить класс WebApiConfig и регистрирования конфигураций в global.asax, до сих пор совсем совершенный. Я скроллирую мое приложение пробую соглашаться на одну Action меня controller и я получаю ошибку 404.

Поскольку уже у меня были проблемы ruteo ранее (из-за незнания) я предполагаю, что он проистекает из чего-то похожего.

Мой WebApiConfig

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);


        GlobalConfiguration.Configure(WebApiConfig.Register);
    }

Controller Webapi: GerenciasController

    public IEnumerable Get()
    {
        ...
    }

Самое любопытное для меня состоит в том, что у меня есть другой controller что, если оно функционирует, различие, чем во мне get я определяю ruteo, отличный от назначенного по умолчанию.

    [Route("api/Legajo/{idCompania}/{idLocal}/{fecha}")]
    public IEnumerable Get(short idCompania, short idLocal, string fecha)
    {
      ...
    }

Я довожу до сведения, что я делаю один httpget:

    $.getJSON('/api/Gerencias/', null, function (data) {
       ...
    });

Также я пробовал с моего browser прямо соглашаясь из-за маршрута:

http://misitio/api/Gerencias/

introducir la descripción de la imagen aquí

5
задан 01.02.2016, 19:05
3 ответа

Я нашел проблему, это ордер на обыск конфигураций ruteo. IDE автоматически тебе добавляет все в конце концов (видеть мой вопрос), это вызывает плохое упомянутое функционирование.

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    //Registrar aquí las configuraciones webapi
    GlobalConfiguration.Configure(WebApiConfig.Register);

    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);


    //no registrar aquí las configuraciones webapi
}
2
ответ дан 24.11.2019, 14:56

Помни, что этот ты должен призывать Get() используя глагол http правильно, только он введет информацию в компьютер в этот, если ты использовал один GET из http.

Используя GET как глагол и url http://{sitio}/api/nombreController был бы должен функционировать

Ты можешь использовать postman или fiddler , чтобы тестировать webapi.

Также пробует определять признаки

[Route("api/Gerencias")]
[HttpGet]
public IEnumerable<Gerencia> Get(){

}

Это это прокомментировало а следовательно я видел в этом artГ-заду

Аттрибуте Роутинг in ASP.NET Веб API 2

pdria, как Другой формы было

[Route("")]
public IEnumerable<Gerencia> Get(){

}

Проанализируй в статье титул "Роуте Префиксес" там упомяни об этом, что я комментирую. Он более там в controller определяет признак [RoutePrefix("api/books")]

2
ответ дан 24.11.2019, 14:56
  • 1
    схвати и # 237; он @Leandro я это делаю посредством одного GET. Возможно falt и # 243; осветлять это в моем вопросе. Очень любопытное то, за чем оно последует, так как ничто мне не кажется редким. – Alan 29.01.2016, 21:22
  • 2
    @Alan, поскольку ты определяешь url? ты это делаешь, как индийский в ответе, ты помещаешь api/nombrecontroller? С каким tools ты тестируешь призывать webapi? – Leandro Tuttini 29.01.2016, 21:28
  • 3
    edit и # 233; мой вопрос осветляя больше вопросов. – Alan 29.01.2016, 21:28
  • 4
    @Alan издайте ответ – Leandro Tuttini 29.01.2016, 21:46
  • 5
    Продолжи быть равным @Leandro. – Alan 29.01.2016, 21:56

Попробуй это добавляя этикетку acciГіn в свойстве routerTemplate , например:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);
1
ответ дан 24.11.2019, 14:56
  • 1
    спасибо за твой вклад, но не были этими проблема а порядок Registers. – Alan 04.04.2016, 16:45