Маршрутизация для API в области MVC - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть проблема для API маршрутизации в области в ASP. Net MVC. Я добавил много областей для (Admin, Guest, SuperAdmin), я хочу добавить API для каждого пользователя, но я не могу получить доступ к API.

     // added this code in Admin Area
            public override void RegisterArea(AreaRegistrationContext context) 
            {
                context.MapRoute(
                    "Admin_default",
                    "Admin/{controller}/{action}/{id}",
                    new { action = "Index", id = UrlParameter.Optional }
                );
            }

    // added this code in SuperAdmin Area
       public override void RegisterArea(AreaRegistrationContext context) 
            {
            context.MapRoute(
                    "SuperAdmin_default",
                    "SuperAdmin/{controller}/{action}/{id}",
                    );
            }

    }

но я хочу использовать код в качестве API, поэтому добавьте

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

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

            config.Routes.MapHttpRoute(
                "CustomApi",
                "api/{controller}/{action}/{id}",
                new { id = RouteParameter.Optional }
            );


            config.Routes.MapHttpRoute("SuperAdminDefaultApiGet", "Api/superadmin/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });


            config.Routes.MapHttpRoute("DefaultApiGet", "Api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
            config.Routes.MapHttpRoute("DefaultApiPost", "Api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
        }
}

Я добавляю два контроллера с одинаковым именем в SuperAdmin, Admin

    [RoutePrefix("api/superAdmin/users")]
        public class SuperAdminController : ApiController
        {
            [Route("getUser")]
            [AllowAnonymous]
            public HttpResponseMessage getUser()
            {
            // code
            }
        }

    [RoutePrefix("api/admin/users")]
    public class AdminController : ApiController
    {
        [Route("getUser")]
        [AllowAnonymous]
        public HttpResponseMessage getUser()
        {
        // code
        }
    }

Может кто угодно помогите мне, как я могу решить маршрутизацию, или поддержите меня статьей для API маршрутизации в области MVC

1 Ответ

0 голосов
/ 05 апреля 2020

Добавьте этот код в ваш webapi.config вверху, прежде чем зарегистрировать любой маршрут API.

config.MapHttpAttributeRoutes();

Также попробуйте временно прокомментировать эти строки во время тестирования

config.Routes.MapHttpRoute("SuperAdminDefaultApiGet", "Api/superadmin/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });


        config.Routes.MapHttpRoute("DefaultApiGet", "Api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
        config.Routes.MapHttpRoute("DefaultApiPost", "Api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...