not net handling found failed error asp asp.net-core-mvc swashbuckle

asp.net core mvc - handling - 500 Error al configurar Swagger en la aplicación asp.net CORE/MVC 6



swagger ui css 500 (12)

Además, si puedo agregarlo, a la configuración de Swagger no le gusta cuando se enruta al nivel raíz de sus controladores. Por ejemplo:

No hagas esto:

[Produces("application/json")] [Route("/v1/myController")] [Authorize] public class myController { [SwaggerResponse((int)System.Net.HttpStatusCode.OK, Type = typeof(RestOkResponse<Response>))] [SwaggerResponse((int)System.Net.HttpStatusCode.InternalServerError, Type = typeof(RestErrorResponse))] [SwaggerResponse((int)System.Net.HttpStatusCode.BadRequest, Type = typeof(RestErrorResponse))] [SwaggerResponse((int)System.Net.HttpStatusCode.Forbidden, Type = typeof(RestErrorResponse))] [SwaggerResponse((int)System.Net.HttpStatusCode.NotFound)] [HttpPost] [Authorize()] public async Task<IActionResult> Create([FromBody] MyObject myObject) { return Ok(); } }

Hacer esto:

[Produces("application/json")] [Authorize] public class myController { [SwaggerResponse((int)System.Net.HttpStatusCode.OK, Type = typeof(RestOkResponse<Response>))] [SwaggerResponse((int)System.Net.HttpStatusCode.InternalServerError, Type = typeof(RestErrorResponse))] [SwaggerResponse((int)System.Net.HttpStatusCode.BadRequest, Type = typeof(RestErrorResponse))] [SwaggerResponse((int)System.Net.HttpStatusCode.Forbidden, Type = typeof(RestErrorResponse))] [SwaggerResponse((int)System.Net.HttpStatusCode.NotFound)] [HttpPost("/v1/myController")] [Authorize()] public async Task<IActionResult> Create([FromBody] MyObject myObject) { return Ok(); } }

Me tomó un tiempo darme cuenta de que la razón por la que estaba recibiendo un error interno del servidor era por este problema de enrutamiento. ¡Espero que esto ayude a alguien!

Estoy intentando configurar un documento API de swagger básico en un nuevo proyecto .NET CORE / MVC 6 y recibo un error 500 de la interfaz de usuario de swagger: 500 : http://localhost:4405/swagger/v1/swagger.json

Mi clase de inicio tiene el siguiente código:

using Swashbuckle.SwaggerGen; using Swashbuckle.SwaggerGen.XmlComments; using Swashbuckle.Application; .... public void ConfigureServices(IServiceCollection services) { ... services.AddSwaggerGen(); services.ConfigureSwaggerDocument(options => { options.SingleApiVersion(new Info { Version = "v1", Title = "Blog Test Api", Description = "A test API for this blogpost" }); }); }

y luego en Configurar:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { .... app.UseSwaggerGen(); app.UseSwaggerUi(); .... }

Cuando compilo y ejecuto el proyecto, aparecerá la interfaz de usuario cuando vaya a swagger / UI / index.html, pero se muestra el error 500 anterior. Cuando voy al enlace swagger / v1 / swagger.json, la consola genera el siguiente error 500: Failed to load resource: the server responded with a status of 500 (Internal Server Error)

¿Hay alguna manera de que pueda averiguar la causa raíz del 500 o habilitar cualquier depuración adicional de manera arrogante para averiguar por qué está generando este error? Basado en algunos de los tutoriales que he visto, solo se requiere lo que tengo en el inicio para una implementación base. Por favor, hágame saber si puedo proporcionar información adicional.

EDIT: esto es para rc1, y puede no ser relevante para el nuevo netcore 1.0 actualmente fuera (29/06/2016)


Cuando agrego la versión del parámetro, funciona

services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); });


Dé un vistazo a este proyecto. https://github.com/domaindrivendev/Ahoy/tree/master/test/WebSites/Basic

Este repositorio es del propietario de Swashbuckle, es una aplicación de ejemplo básica de ASP.NET 5, esto le ayuda a corregir sus dispositivos de configuración (y cuide sus órdenes, es importante, por ejemplo, use "app.UseSwaggerGen (); app.UseSwaggerUi (); after app.UseMvc ();)

Para habilitar el registro en su aplicación, eche un vistazo a: https://docs.asp.net/en/latest/fundamentals/logging.html?highlight=logging (el registro se generará dentro de la carpeta "wwwroot"


En algunos casos, el enrutador del controlador está duplicado. Revise el último controlador modificado.


En primer lugar, puede habilitar la página de excepción de desarrollador agregando app.UseDeveloperExceptionPage(); en su Configurar () para ver mejor cuál es la causa raíz. Mira here

En mi caso, el problema fue que también tengo que instalar Microsoft.AspNetCore.StaticFiles nuget Microsoft.AspNetCore.StaticFiles para que Swagger funcione.

Intente también desinstalar / reinstalar Swashbuckle.AspNetCore nuget.


Inicialmente recibí un error 500 también. En el fondo del stacktrace decía: System.NotSupportedException: Verbos HTTP no enlazados para la ruta ''api / hotels''. ¿Te estás perdiendo un atributo HttpMethodAttribute?

Resultó que me faltaba un atributo HttpGet para uno de mis métodos de api:

[Microsoft.AspNetCore.Mvc.HttpGet]


La configuración de Swagger varía mucho de una versión a otra. Esta respuesta es para Swashbuckle 6.0.0-beta9 y Asp.Net Core 1.0. Dentro del método ConfigureServices de Startup.cs, debe agregar:

services.AddSwaggerGen(c => { c.SingleApiVersion(new Info { Version = "v1", Title = "My Awesome Api", Description = "A sample API for prototyping.", TermsOfService = "Some terms ..." }); });

Luego, en el método Configurar debes agregar -

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseMvc(); app.UseSwaggerGen(); app.UseSwaggerUi(); }

Asegúrese de que está haciendo referencia en Startup.cs -

utilizando Swashbuckle.SwaggerGen.Generator;

Mi archivo project.json se parece a

"dependencies": { "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final", "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final", "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final", "Microsoft.EntityFrameworkCore.Tools": "1.0.0-*", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final", "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final", "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final", "Microsoft.Extensions.Logging": "1.0.0-rc2-final", "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final", "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final", "Swashbuckle": "6.0.0-beta9" }, "tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": { "version": "1.0.0-preview1-final", "imports": "portable-net45+win8+dnxcore50" }, "Microsoft.EntityFrameworkCore.Tools": { "version": "1.0.0-preview1-final", "imports": [ "portable-net45+win8+dnxcore50", "portable-net45+win8" ] } }, "frameworks": { "net452": { } }, "buildOptions": { "emitEntryPoint": true, "preserveCompilationContext": true, "xmlDoc": false }, "publishOptions": { "include": [ "wwwroot", "Views", "appsettings.json", "web.config" ] }, "scripts": { "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] } }


Para ver la fuente de excepción.

  • navegador chrome abierto
  • herramientas de desarrollador abiertas
  • Ver excepciones en la pestaña de la consola.
  • arreglalo.

Puede ser obvio pero, además de perder los HttpGet o HttpPost , no olvides diferenciar los métodos de publicación.

Puede tener 2 métodos diferentes (con nombres diferentes) marcados con HttpPost , y eso también podría causar este tipo de problema. Recuerde especificar el nombre del método en el atributo: [HttpPost("update")] .


Recibí este error cuando una de mis funciones estaba marcada como public , pero no estaba destinada a ser un servicio web al que se podía llamar directamente.

Cambiar la función a private hizo que el error desapareciera.

Alternativamente, inmediatamente antes de su función public , puede poner el comando [NonAction] , para decirle a Swagger que lo ignore.

[NonAction] public async Task<IActionResult> SomeEvent(string id) { ... }

(Desearía que Swagger realmente informara el nombre de la función que causó este problema, en lugar de quejarse de que ya no puede encontrar el archivo " ../swagger/v1/swagger.json " ... eso no es particularmente útil. )


Si alguien quiere saber que el error exacto está en el seguimiento de la pila de Swagger, solicite la URL:

<your-app-url>/swagger/v1/swagger.json

O bien, haga clic en el enlace swagger.json desde la consola de herramientas de desarrollo del navegador:


También tenía este problema. En mi caso, fue causado por dos puntos finales en el mismo controlador con la misma ruta y nombre de método (pero diferentes tipos de parámetros). Por supuesto, luego se hizo evidente que, de todos modos, eso era probablemente una mala práctica, así que cambié los nombres de los puntos finales y todo estuvo bien.