WebApi在MVC 4中一個Controll多個post方法報錯處理

深海藍山發表於2016-12-09

在使用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 });
        }



相關文章