Swashbuckle/Swagger + ASP.Net Core: “Échec du chargement de l'API définition de”

Je développe un ASP.NET Core 2 application et inclus Swagger. Tout a bien fonctionné jusqu'à ce que j'ai présenté une méthode sans définir explicitement l'action HTTP:

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

Quand j'ai commencé l'application de cette méthode, le message suivant a montré jusqu':

Échec du chargement de définition de l'API.

Erreurs

Chercher l'erreur Interne au Serveur Erreur /swagger/v1/swagger.json

Dès que je l'ai définie explicitement par exemple [HttpGet] l'erreur disparaît. Le problème avec ceci est que, j'ai besoin de cette méthode à feu pour tous les possibles HTTP opérations.
Bien sûr, je pourrais spécifier toutes les opérations de manière explicite, mais j'ai le sentiment Swagger doit être capable de gérer cela correctement.

Pourquoi ne Swagger se comporter de cette façon?

Est-il de la configuration que je peux utiliser?

  • "J'ai besoin de cette méthode à feu pour tous les possibles HTTP opérations" pourquoi avez-vous besoin d'un soutien à toutes les méthodes, plutôt que d'en OBTENIR?
  • Pouvez-vous partager votre Swashbuckle de configuration?
  • dans ce cas, le Error point de terminaison est utilisé en tant que gestionnaire d'exception. Selon l'opération de HTTP de la requête, la fonction de l'opération sur le Error extrémité est appelée.
  • la config est assez simple: services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My Service", Version = "v1" }); }); app.UseSwagger(c => { c.PreSerializeFilters.Add((swagger, httpReq) => swagger.Host = httpReq.Host.Value); }); app.UseSwaggerUI(c => { c.RoutePrefix = "swagger"; // serve the UI at root c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); });
  • J'ai réussi à reproduire votre problème, ressemble à un Bug dans le Swashbuckle.AspNetCore, le ResolveConflictingActions devrait fonctionner
  • le code que vous avez fourni dans votre commentaire ci-dessus a fonctionné pour moi. Je suis l'aide de Swashbuckle.AspNetCore(3.0.0) et AspNetCore.Tous(2.0.9).

InformationsquelleAutor Ash | 2018-05-07