Веб-API ASP.NET MVC с несколькими методами HttpPosts не работает - PullRequest
0 голосов
/ 02 мая 2018

В моем контроллере API ASP.NET есть два следующих метода записи:

    [HttpPost]
    [ActionName("post1")]
    public bool PostGradingTasks(List<Reports> landingCells)
    {
    }

    [HttpPost]
    [ActionName("post2")]
    public String UploadImages(HttpPostedFileBase file)
    {
    }

Но когда я вызываю PostGradingTasks из этого приложения, которое я создаю, оно не вызывается, только когда я полностью удаляю UploadImages, оно работает: вот мои маршруты

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            // Configure Web API to use only bearer token authentication.
            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

            // Web API routes
            config.MapHttpAttributeRoutes();

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

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

            config.Routes.MapHttpRoute(
                name: "ControllerAndAction",
                routeTemplate: "api/{controller}/{action}"
            );
        }
    }

Я только что добавил этот маршрут:

config.Routes.MapHttpRoute(
                    name: "ControllerAndAction",
                    routeTemplate: "api/{controller}/{action}"
                );

Но он все еще не работает, что я делаю не так?

1 Ответ

0 голосов
/ 02 мая 2018

Вы должны использовать атрибут маршрутизации, IMO которого лучше, чем обычные маршруты. Настройте его, используя атрибуты Route / RoutePrefix на контроллере и методы.

Вот пример для ваших методов сообщения

[RoutePrefix("api/test")]
public class TestController: ApiController
{
    [HttpPost]
    [Route("post1")] //api/test/post1
    public bool PostGradingTasks(List<Reports> landingCells)
    {
    }

    [HttpPost]
    [Route("post2")] //api/test/post2
    public String UploadImages(HttpPostedFileBase file)
    {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...