在使用Swagger WebApi文档框架时,一个Controll中写多个Post接口时,在MVC4中会提示无法识别的多个post请求,原因是WebApiConfig中默认路由配置中是没有配置{action}引起的。
【在MVC5中没有此问题,原因是MVC5有Route[” “]特性,MVC4中不支持】
解决方案:
方法1:修改WebApiConfig文件
1 2 3 4 5 6 7 8 9 10 11 12 |
//默认配置 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:MVC5中可以不修改默认配置文件,而使用Route特性来指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/// <summary> /// POST请求1 /// ///api/Member /// </summary> /// <param name="value"></param> public void Post([FromBody]string value) { } /// <summary> /// POST请求2 /// api/Member/Login /// </summary> /// <param name="loginId"></param> /// <param name="password"></param> /// <returns></returns> [HttpPost, Route("api/Member/Login")] public string Login([FromBody]string loginId, [FromBody]string password) { return ""; } |
发布者:柚子,转转请注明出处:https://ityouzi.com/archives/aspnet_webpi_post_swagger_error.html