es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Respuesta de Postman: Se encontraron múltiples acciones que coinciden con la solicitud.

Tengo dos métodos con el mismo nombre, pero diferentes parámetros, que deben devolver un HttpResponseMessage.

public HttpResponseMessage ReceivedData(JObject jsonData)

y

public HttpResponseMessage ReceivedData(double longitude, double latitude)

Si estoy haciendo una solicitud POST desde Postman para el segundo usando

http://localhost:6296/api/MyController/ReceivedData?longitude=0&latitude=0

todo funciona bien, pero para el primero

http://localhost:6296/api/MyController/ReceivedData

con el cuerpo JSON {"longitude":0, "latitude":0, "otherData":"test"},
estoy obteniendo

"ExceptionMessage": "Se encontraron varias acciones que coinciden con la solicitud

No entiendo qué estoy haciendo mal.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que hay múltiples métodos en el controlador que coinciden con la solicitud que se está haciendo, lo que causa un conflicto. En este caso, ambos métodos ReceivedData(JObject jsonData) y ReceivedData(double longitude, double latitude) tienen el mismo nombre de método pero diferentes parámetros.

    Para solucionar este problema, puede usar el enrutamiento de atributos para especificar la ruta de cada método explícitamente. Puede decorar cada método con el atributo [HttpPost] y agregar un parámetro de plantilla de ruta para definir la ruta por la que se invocará el método.

    Por ejemplo, puede modificar el primer método de esta manera:

    [HttpPost("datos")]
    public HttpResponseMessage ReceivedData([FromBody] JObject jsonData)
    

    Y modificar el segundo método de esta manera:

    [HttpPost("coordenadas")]
    public HttpResponseMessage ReceivedData([FromQuery] double longitude, [FromQuery] double latitude)
    

    De esta manera, puede realizar solicitudes POST a cada punto final de manera explícita utilizando el parámetro de plantilla de ruta correspondiente. En Postman, puede modificar la URL para que coincida con el parámetro de plantilla de ruta, por ejemplo:

    http://localhost:6296/api/MyController/datos
    

    o

    http://localhost:6296/api/MyController/coordenadas?longitude=0&latitude=0
    

    Al agregar el parámetro de plantilla de ruta, está definiendo una ruta única para cada método, por lo que el mensaje de error “Se encontraron varias acciones que coinciden con la solicitud” ya no debería aparecer.

Comments are closed.