在使用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:MVC5中可以不修改默认配置文件,而使用Route特性来指定
/// <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 "";
}
发布者:IT柚子,转转请注明出处:https://ityouzi.com/archives/aspnet_webpi_post_swagger_error.html