none
Siempre ingresa al mismo action del controlador WebAPI RRS feed

  • Pregunta

  • al realizar pruebas en Postman, siempre me envía al mismo action de mi controller que  esta configurado de esta forma

        [Authorize]
        public class ConsultasGPController : ApiController
        {
    
            [HttpPost]
              public IList<PuertosGP> ConsultasPuertos([FromUri] string id, [FromUri] DateTime fecha, [FromBody] List<PuertosGP> lstFronteras)
              {----demas codigo}
    
            [HttpPost]
            public IList<BahiaGP> ConsultaBahiaGPPorFecha([FromUri] DateTime fecha)
              {----demas codigo}
            [HttpPost]
            public IList<BahiaGP> ConsultaBahiaGPPorTipoDia([FromBody] List<BahiaGP> lstFiltroFrontera, [FromUri] DateTime fecha)
              {----demas codigo}
        }

    Mi clase de webconfig esta de esta forma ya he modificado los controller action los parameters... y lo deje tal cual como lo crea el visual studio

        public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                // Configuración y servicios de API web
                // Web API configuration and services
                config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
    
                // Rutas de API web
                config.MapHttpAttributeRoutes();
    
                // AÑADE EL HANDLER DE VALIDACIÓN DE TOKENS
                config.MessageHandlers.Add(new ValidatorTokenHandler());
    
                config.Routes.MapHttpRoute(
                        name: "DefaultApi",
                        routeTemplate: "api/{controller}/{id}",
                        defaults: new { id = RouteParameter.Optional, fecha = RouteParameter.Optional }
                        );
    
    
            }
        }


    Siempre ingresa al mismo action del controller http://localhost:24175/api/ConsultasGP/Consultapuertos?fecha=2019-11-14

    al ConsultaBahiasPorFecha ConsultaBahiaTipoDia no ingresa... que puede estar sucediendo?? ya realice un action de prueba

      

    Realice un metodo del controler Values con HttpGet

            [HttpGet]
            public IEnumerable<string> Values([FromBody] List<FronteraDGPTO> lstFronteras)
            {
                return new string[] { "value1", "value2" };
            }

    este si lo y arroja los resultados....



    • Editado greg_dorian martes, 19 de noviembre de 2019 20:54
    martes, 19 de noviembre de 2019 20:52

Respuestas

  • Estás pensando en un "Controller" y no en un "ApiController".

    Fíjate en que en el mapa de rutas pone "api/{controller}/{id}". No hay nada de {action}. Con ese mapa solo distingue las llamadas por el método (Post, Get) y el nombre del controlador, pero no por el nombre del método.

    Si quieres tener en el mismo controlador dos métodos que funcionen por POST, puedes resolverlo poniendo más rutas en el MapHttpRoute, o si es una versión moderna del WebApi, usando el atributo [Route(...)] sobre el método. Pero no es suficiente con solo cambiar el nombre del método o sus parámetros.

    • Marcado como respuesta greg_dorian martes, 19 de noviembre de 2019 22:09
    martes, 19 de noviembre de 2019 21:25