【问题标题】:Swashbuckle fails in asp.net core with NotSupportedException exceptionSwashbuckle 在 asp.net 核心中失败,出现 NotSupportedException 异常
【发布时间】:2019-11-05 20:15:17
【问题描述】:

我关注了example,了解如何在我的 asp.net core 2.2 项目中添加 swashbuckle。

一旦我运行项目,我就会收到以下错误:

处理请求时发生未处理的异常。 NotSupportedException:HTTP 方法“GET”和路径“{id}”被操作重载 - dotnet1.Server.Controllers.UsersController.GetById (dotnet1.Server),dotnet1.Server.Controllers.ValuesController.Get (dotnet1.Server)。动作需要独特的方法/路径组合 招摇 2.0。使用 ConflictingActionsResolver 作为解决方法

不明白这里有什么问题。

【问题讨论】:

  • 如果您能提供一个不需要我们查看外部链接的minimal reproducible example,那就太好了(大多数人不会这样做)。
  • 查看异常类以了解应该使用的常见情况:docs.microsoft.com/en-us/dotnet/api/… 提到 get,我猜这是一个 webAPI。显然不支持您的 WebAPI 调用。如果您必须拥有一个功能(您必须实现一个 .NET 接口),但无法获得有意义的代码,则通常使用它。
  • 你需要分享你的控制器代码

标签: c# .net asp.net-core .net-core swashbuckle


【解决方案1】:

试试get方法:

[HttpGet("{id}")]

您必须区分您的方法并正确映射。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,并通过将 MVC 路由配置得更明确来解决它。

    我希望HTTPGET /users/{id} 用于单个用户,HTTPGET /users?role={role}

    所以,根据我在下面链接的这个 Github 问题的评论中读到的内容,我在配置我的 MVC 路由时做了以下操作。

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}");
    
        routes.MapRoute(
            name: "single",
            template: "{controller=Home}/{id}");
    });
    

    Related Github Issue

    【讨论】:

      【解决方案3】:

      这在使用 Swagger 时很常见。这里真正的错误是这个

      操作需要 Swagger 2.0 的唯一方法/路径组合。利用 ConflictingActionsResolver 作为一种解决方法

      招摇似乎奏效了。这是我们在控制器命名不同时遇到的一般错误。

      1) 检查动作方法中的重复名称。将导致 GET 操作方法的错误名称更改为其他名称并尝试?

      我在我的 aspnet 核心应用程序中遇到了这个错误,并像这样修复了它。

      您的问题可能与this有关

      如果 Swashbuckle 遇到具有相同路径(无查询字符串)和 HTTP 方法的多个操作,则会引发异常

      该链接为您的问题提供了解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-06
        • 2023-03-26
        • 1970-01-01
        • 2021-04-30
        • 2021-07-24
        • 2015-10-17
        • 2019-12-10
        相关资源
        最近更新 更多