Asp.net web api Web Api-招摇过市文档错误500
当我访问招摇url时:Asp.net web api Web Api-招摇过市文档错误500,asp.net-web-api,swagger,Asp.net Web Api,Swagger,当我访问招摇url时:http://localhost:28483/swagger/ui/index,它会生成以下错误: 500 : undefined http://localhost:28483/swagger/docs/v1 有什么想法吗 更新: 请参阅firebug中的此详细错误: Not supported by Swagger 2.0: Multiple operations with path 'api/BimModel' and method 'GET'. See the c
http://localhost:28483/swagger/ui/index
,它会生成以下错误:
500 : undefined http://localhost:28483/swagger/docs/v1
有什么想法吗
更新:
请参阅firebug中的此详细错误:
Not supported by Swagger 2.0: Multiple operations
with path 'api/BimModel' and method 'GET'. See the config setting - \"ResolveConflictingActions\" for
a potential workaround
在控制器中,它得到了两个不同的GET操作,并且被Swagger禁止。
我建议每个控制器只能有一个GET操作,或者您是否尝试在您的招摇过市配置中启用此操作
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
Swagger可能会将两个操作视为一个操作(就像在这个常见场景中一样) 似乎您可以使用来修复此问题,并在您的操作上方使用这些属性,以便swagger可以单独识别它们
[Route("api/Products")]
[Route("api/Products/{id:guid}")]
当混合属性路由和默认路由时,我也遇到了同样的问题。 当我删除默认路由时,问题就消失了。缺点是,在没有定义默认路由的情况下,我不得不向所有控制器添加属性路由 因此,我从我的WebApiConfig中删除了:
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
并将属性路由添加到我的控制器:
[Route(“Session”)]//添加了此属性
公共异步任务Get()
...
[Route(“Session/{id}”)]//添加了此属性
公共异步任务Get(int-id)
实际上,我在控制器上使用了
[RoutePrefix(“Session”)]
,在方法上使用了[Route(“”)]
,但结果应该是相同的。由于属性路由语句和方法签名之间的参数名称不匹配,我遇到了这个错误
[HttpGet("{id}")]
public IActionResult Get(string deviceNumber){
...
将“{id}”更改为“{deviceNumber}”后,它修复了错误。您有什么错误?@CuongLe:这就是我在浏览器中得到的所有内容。不幸的是,在ApiConfig中修改路由器没有帮助。Swagger 2.0仍不支持
:使用路径执行多个操作…
。看起来我必须为每个get方法创建新的控制器,或者有没有其他方法可以强制swagger合作(某些属性…)?虽然这可能会解决错误,但其他操作不会在swagger中显示。嘿,欢迎使用Stackoverflow!请用英语,因为几乎没有人能理解你的答案。这个网站的想法是,一个人问一个问题,另一个人回答,并为每个有相同问题的人记录问题的解决方案。所以,如果只有一小部分人理解你的答案,那就是一种浪费;)
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);