的Web API - 扬鞭文档错误500

问题描述:

当我访问招摇网址:http://localhost:28483/swagger/ui/index,它生成此错误:的Web API - 扬鞭文档错误500

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 
+0

你有什么错误? –

+0

@CongLe:这就是我在浏览器中获得的一切。 –

扬鞭可能会考虑两个动作为一个操作(就像这个常见的场景的情况下)...

GET api/Products 
GET api/Products/{id} 

看来你可以使用attribute routing修复它并使用上面这些属性你的举动如此激动人心,会分开承认他们。

[Route("api/Products")] 

[Route("api/Products/{id:guid}")] 

在控制器,它有两个不同的GET操作,它是由扬鞭不允许的。 我建议要么为每个控制器只有单一的GET操作或modify the router in WebApiConfig

+1

不幸的是,在ApiConfig中修改路由器并没有帮助。仍然有'不支持Swagger 2.0:多路径操作...'。看起来我必须为每个get方法创建新的控制器,或者有什么其他方式来强制swagger进行合作(某些属性,...)? – wolen

您是否尝试过在您的swagger配置中启用此功能?

c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 
+1

尽管这可能会解决错误,但其他操作不会显示出来然后在大摇大摆。 – Evan

我在将属性路由与默认路由混合时遇到同样的问题。 当我删除默认路由时,问题就消失了。缺点是,没有定义默认路由,我不得不将属性路由添加到我的所有控制器。

所以从我的WebApiConfig我删除:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

而添加的属性路由到我的控制器:

[Route("Session")] // Added this attribute 
public async Task<IHttpActionResult> Get() 
...  
[Route("Session/{id}")] // Added this attribute 
public async Task<IHttpActionResult> Get(int id) 

在现实中,我在我的控制器使用[RoutePrefix("Session")]和我的方法使用[Route("")],但结果应该是一样的。

由于参数名称在属性路由语句和方法签名之间不匹配,我得到此错误。

[HttpGet("{id}")] 
public IActionResult Get(string deviceNumber){ 
... 

将“{id}”更改为“{deviceNumber}”后,它修复了错误。