Как использовать несколько функций PUT в Web API C # - PullRequest
0 голосов
/ 29 мая 2019

Метод множественного размещения, работающий в локальном iis, но не на живом сервере.

         Webapi Config:

     config.MapHttpAttributeRoutes();

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

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

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

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


   [HttpPut]

    public async Task<int> DeleteCity(Guid? Id)
    {
        City updateCity = await db.City.Where(x => x.Id == Id).FirstOrDefaultAsync();
        updateCity.IsActive = 0;
        await db.SaveChangesAsync();
        return 1;
    }


    [HttpPut]
    [Route("api/city/DeleteCitys/{Id}")]
    public async Task<int> DeleteCitys(Guid? Id)
    {
        City updateCity = await db.City.Where(x => x.Id == Id).FirstOrDefaultAsync();
        updateCity.IsActive = 1;
        await db.SaveChangesAsync();
        return 3;
    }

http://freedompg.softwarecubes.com/api/city/76F84F4C-22C8-4EF8-B593-B3605CF9AD14

Вывод: 1 является правильным

http://freedompg.softwarecubes.com/api/city/DeleteCitys/76F84F4C-22C8-4EF8-B593-B3605CF9AD14

Вывод: 1 неверно (вызов предыдущей функции)

1 Ответ

0 голосов
/ 31 мая 2019

Ваш код должен быть таким. Вам также необходимо иметь маршрут для DeleteCity

[HttpPut]
[Route("api/city/{Id}")]
public async Task<int> DeleteCity(Guid? Id)
{
    City updateCity = await db.City.Where(x => x.Id == Id).FirstOrDefaultAsync();
    updateCity.IsActive = 0;
    await db.SaveChangesAsync();
    return 1;
}


[HttpPut]
[Route("api/city/DeleteCitys/{Id}")]
public async Task<int> DeleteCitys(Guid? Id)
{
    City updateCity = await db.City.Where(x => x.Id == Id).FirstOrDefaultAsync();
    updateCity.IsActive = 1;
    await db.SaveChangesAsync();
    return 3;
}
...