1. ホーム
  2. c#

[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました

2022-02-09 19:46:54

質問

ASP.NET Core 2のアプリケーションを開発し、Swaggerを組み込みました。HTTPアクションを明示的に定義せずにメソッドを導入するまでは、すべてがうまくいきました。

public class ErrorController : Controller
{
    [Route("/error")]
    public IActionResult Index()
    {
        return StatusCode(500, new Error("Internal error."));
    }
}

この方法でアプリを起動すると、次のようなメッセージが表示されました。

API定義の読み込みに失敗しました。

エラー
フェッチエラー Internal Server Error /swagger/v1/swagger.json

を明示的に設定すると、すぐに [HttpGet] はエラーが消えます。この問題は、このメソッドがすべての可能なHTTP操作に対して起動する必要があることです。 もちろん、すべての操作を明示的に指定することもできますが、Swaggerはこれを正しく処理することができるはずだと感じています。

なぜSwaggerはこのような挙動をするのでしょうか?

何か設定方法はありますか?

解決方法を教えてください。

オプション ResolveConflictingActions この場合、動作しているはずなのですが・・・。

実際のエラーはこちらです。

System.NotSupportedException: Ambiguous HTTP method for action

から来ていますね。 https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/86cc761bc4f5dda796f80ad8dfd8bc205542a6f6/src/Swashbuckle.AspNetCore.SwaggerGen/Generator/SwaggerGenerator.cs#L90

これはバグだと思います。もし本当に興味があるなら、プロジェクトに報告すべきです。