Я перемещаю свои конечные точки Web-интерфейса Asp.Net в проект .Net Core 2.0, но борюсь с Swagger для тестирования API. В данный момент я получаю следующую ошибку:
InvalidOperationException: не указана схема аутентификации, и
не найдено DefaultChallengeScheme.
Я использую Swashbuckle.AspNetCore 2.4.0
Я добавил свой AddSwashbuckle в мой ConfigureService в Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddSwaggerDocumentation();
services.AddMvc();
}
И в методе Configure я добавил строку Add для swashbuckle.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwaggerDocumentation();
}
app.UseCors(builder => builder.WithOrigins("*"));
app.UseMvc();
}
Я добавил метод расширения для обработки Swagger.
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Swashbuckle.AspNetCore.Swagger;
using System.Collections.Generic;
namespace JwtSwaggerDemo.Infrastructure
{
public static class SwaggerServiceExtensions
{
public static IServiceCollection AddSwaggerDocumentation(this IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1.0", new Info { Title = "Main API v1.0", Version = "v1.0" });
// Swagger 2.+ support
var security = new Dictionary<string, IEnumerable<string>>
{
{"Bearer", new string[] { }},
};
c.AddSecurityDefinition("Bearer", new ApiKeyScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = "header",
Type = "apiKey"
});
c.AddSecurityRequirement(security);
});
return services;
}
public static IApplicationBuilder UseSwaggerDocumentation(this IApplicationBuilder app)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "Versioned API v1.0");
c.DocumentTitle = "Title Documentation";
c.DocExpansion(DocExpansion.None);
});
return app;
}
}
}
(Обратите внимание, это следовало это сообщение .
Однако я получаю сообщение об ошибке, как указано выше, и не могу понять, как я могу заставить это работать. Мне кажется, что-то где-то не хватает. Как я могу решить эту проблему или увидеть, в чем проблема?