Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.7K
Vistas
Obtener swagger-ui devuelve 404 en una aplicación ASP.NET Core 3.1 en Azure

Al cargar la página /swagger/index.html, el navegador no puede encontrar los recursos de swagger-ui necesarios cuando se implementa en un servicio de aplicaciones en Azure y devuelve 404. Funciona cuando se ejecuta localmente. Mi configuración es:

 services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "Nexus WebApp", Version = "v1" }); options.CustomSchemaIds(type => type.ToString()); });
 var builder = endpoints.CreateApplicationBuilder(); builder.UseSwagger(); builder.UseSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "Nexus WebApp"); }); var pipeline = builder.Build(); endpoints.Map("/swagger", pipeline) .RequireAuthorization(new AuthorizeAttribute()); endpoints.Map("/swagger/index.html", pipeline) .RequireAuthorization(new AuthorizeAttribute()); endpoints.Map("/swagger/{documentName}/swagger.json", pipeline) .RequireAuthorization(new AuthorizeAttribute());

Lo intenté con una ruta relativa desde el punto final de swagger como ..\swagger\v1/swagger.json , intenté especificar un RoutePrefix, pero desafortunadamente fue en vano. Sé que se han hecho preguntas similares, pero lamentablemente ninguna parece ayudar.

¿Alguien tiene alguna pista?

Actualizar

Estos son los recursos por los que está devolviendo 404:

  • https://{dominio}/swagger/swagger-ui.css
  • https://{dominio}/swagger/swagger-ui-standalone-preset.js
  • https://{dominio}/swagger/swagger-ui-bundle.js
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Sospecho que su implementación es incorrecta. Aquí está el código de Startup completo para configurar la interfaz de usuario de Swagger en NET Core:

 using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Swashbuckle.AspNetCore.Swagger; namespace IDGSwaggerDemo { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion (CompatibilityVersion.Version_2_2); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Version = "v1", Title = "Swagger Demo", Description = "Swagger Demo for ValuesController", TermsOfService = "None", Contact = new Contact() { Name = "Joydip Kanjilal", Email = "joydipkanjilal@yahoo.com", Url = "www.google.com" } }); }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1"); }); } } }

Consulte este tutorial para obtener una implementación de Swagger más mejorada.

over 4 years ago · Santiago Trujillo Denunciar

0

Finalmente, después de luchar con esto durante horas, logré que funcionara. Tenga en cuenta que tengo el requisito especial de tener una API web para la cual quiero que los controladores usen la autenticación de token de portador y, al mismo tiempo, quiero que la interfaz de usuario de Swagger esté protegida por OIDC.

He omitido partes en la clase que no son relevantes para esta respuesta.

 var builder = WebApplication.CreateBuilder(args); builder.Services.AddMvc(); // Add authentication to web API builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(builder.Configuration); // Add authentication to web app for Swagger authorization builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration); builder.Services.AddSwaggerGen(); builder.Services.AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser() .Build(); }); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); app.Use(async (context, next) => { if (context.Request.Path.StartsWithSegments("/swagger") && context.User.Identity?.IsAuthenticated == false) { await context.ChallengeAsync(OpenIdConnectDefaults.AuthenticationScheme); } else { await next(); } }); app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "API v1"); }); app.MapControllers(); app.Run();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda