WebApi在MVC 4中一个Controll多个post方法报错处理

时间:2021-03-24 20:03:15

在使用Swagger WebApi文档框架时,一个Controll中写多个Post接口时,在MVC4中会提示无法识别的多个post请求,原因是WebApiConfig中默认路由配置中是没有配置{action}引起的。

【在MVC5中没有此问题,原因是MVC5有Route[" "]特性,MVC4中不支持】

1.修改WebApiConfig文件

 //默认配置
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            //修改后配置
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

2.API接口示例

        [HttpPost]
        [ActionName("UserInfo")]
        public string UserInfo(string name)
        {
            return name;
        }


3.MVC5中可以不修改默认配置文件,而使用Route特性来指定

        [Route("api/Account/HideApi")]        
        [HttpGet]
        public HttpResponseMessage HideApi(string value)
        {
            return Request.CreateResponse(HttpStatusCode.OK, new { errorCode = "0", value = value });
        }