Методы POST не ejectuados в Вебе API

у меня есть следующий код:

public static void EnviarDatos<T>(string url, T data, EmpresaData empresa)
    {
        try
        {
            using (HttpClient client = new HttpClient())
            {
                string json = JsonConvert.SerializeObject(data);

                var stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");

                var result = client.PostAsync(url + "?identificador=" + empresa.Identificador, stringContent).Result;


            }
        }
        catch (Exception e)
        {

        }

    }

И код моего драйвера содержит эти методы:

 [HttpPost]
    public IHttpActionResult Turnos(List<Turnos> Turnos, string identificador)
    { ...... }

 [HttpPost]
        public IHttpActionResult Sectores(List<Sectores> Sectoress, string identificador)
        { ..... }

И не выполняет ни один из 2. url правилен.

Я думаю, что он имеет общее, с которым параметры почти равны, и возможно, что PostAsync запутывается.

Что будет?

0
задан 20.03.2019, 16:16
3 ответа

Если проблема - многообразных матч, когда он решает, что action ты был бы должен мочь отделять это показывая routing

Анализируя документацию

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

края, которые могут использовать признак [Route], чтобы показывать url, у которого будут каждый action

[Route("api/turnos")]
[HttpPost]
public IHttpActionResult Turnos(List<Turnos> Turnos, string identificador)
{ ...... }

[Route("api/sectores")]
[HttpPost]
public IHttpActionResult Sectores(List<Sectores> Sectoress, string identificador)
{ ..... }   

тогда url, осталось бы

http://sitio/api/turnos
http://sitio/api/sectores

обоих с POST, но ты это отделяешь, согласно которому данные ты хочешь вернуть

0
ответ дан 02.12.2019, 05:22

Это solucionГ© изменяя WebApiConfig.cs папки App_Start меняясь в это:

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
0
ответ дан 02.12.2019, 05:22

Он проверяет как дела mapeando url твоего Веба api для многообразных действий сам названный из-за default route сдержись объявляют, что

 routeTemplate:"api/{controller}/{id}"

должен быть объявленным следующего способа:

routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
0
ответ дан 02.12.2019, 05:22