Asp.net web api Web Api-招摇过市文档错误500

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

当我访问招摇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 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 }
);