Asp.net web api 控制器中只有一个GET方法,但尚未获取;Swagger 2.0不支持:路径为“的多个操作”;

Asp.net web api 控制器中只有一个GET方法,但尚未获取;Swagger 2.0不支持:路径为“的多个操作”;,asp.net-web-api,swagger,asp.net-web-api-routing,swashbuckle,attributerouting,Asp.net Web Api,Swagger,Asp.net Web Api Routing,Swashbuckle,Attributerouting,我知道有很多问题都是同一个标题,但这一个是不同的 我在我的产品控制器上遇到这个错误,所以为了调查这个问题,我在ASP.NET Web API 2中创建了一个演示控制器。 DemoController.cs namespace WMWebAPIControllers.Controllers { [RoutePrefix("api/Demo")] public class DemoController : ControllerBase { [HttpGet] [Route("")]

我知道有很多问题都是同一个标题,但这一个是不同的

我在我的产品控制器上遇到这个错误,所以为了调查这个问题,我在ASP.NET Web API 2中创建了一个演示控制器。 DemoController.cs

namespace WMWebAPIControllers.Controllers
{
[RoutePrefix("api/Demo")]
public class DemoController : ControllerBase
{
    [HttpGet]
    [Route("")]
    public async Task<IHttpActionResult> GetProducts(int CatalogType, string ProductNo)
    {
        return Ok();
    }
}}
命名空间WMWebAPIControllers.Controllers
{
[RoutePrefix(“api/Demo”)]
公共类DemoController:ControllerBase
{
[HttpGet]
[路线(“”)
公共异步任务GetProducts(int CatalogType,string ProductNo)
{
返回Ok();
}
}}
奇怪的是,演示控制器只有一种方法。没有一种方法可以让斯威格找到埋伏

我不明白这个问题。 下面是大摇大摆的错误

500:{“message”:“出现错误”。,“exceptionMessage”:“Swagger 2.0不支持:路径为“api/Demo”和方法为“GET”的多个操作。有关潜在的解决方法,请参阅配置设置-\“ResolveConflictingActions\”,“exceptionType”:“System.NotSupportedException”


问题是我有一个没有路由属性的公共方法,所以斯威格发现为空路由配置的GetProducts()方法有歧义

将该公共方法标记为[NoAction]属性并解决问题

它也可以标记为private/protected来解决这个问题,但在我的例子中,它是一个接口方法


希望这会对其他人有所帮助。

您确定没有任何旧的dll吗?可能您重命名了项目,更新了dll名称。请在Visual Studio中进行清理,然后检查bin/obj文件夹,最后删除Windows\Framework32&64临时文件。一旦所有内容都消失,请重新加载Visual Studio并重试again@AndreiDragotoniu哪里可以我发现Windows\Framework32&64临时文件?C:\Windows\Microsoft.NET\Framework\v4.0.30319\临时ASP.NET文件和Framework64。您需要更新到您的isI使用同一控制器创建的不同项目的任何位置,并且该项目工作正常。我无法理解此控制器中的问题,但我在ma中发现了问题在控制器中。它有一个公共方法和一个带有[route(“”)的方法。这导致了歧义。我将公共方法标记为[NoAction],招摇过市错误消失。这就是我的问题所在