ASP.NET Core Web API Swagger错误-流的第13行结尾处出现分析器错误,或应为文档分隔符

s1ag04yj  于 9个月前  发布在  .NET
关注(0)|答案(1)|浏览(98)

在我的ASP.NET Core 6 Web API中,当我在本地启动它时,它就能工作。但是当我将它部署到IIS时,我决定在Swagger上启动它。
我得到了这个错误:
第13行出现解析器错误
应该是流的结尾或文档分隔符
NB:我的Program.cs的第13行没有任何内容
我该如何解决这个问题?
Program.cs:

using FluentValidation.AspNetCore;
using Serilog;
using System.Reflection;
using MyApp.API.Extensions;

var builder = WebApplication.CreateBuilder(args);
ConfigurationManager configuration = builder.Configuration;
var environment = builder.Environment;

// Add services to the container.
builder.Services.AddHttpContextAccessor();

builder.Services.AddMvc();
builder.Services.AddControllers().AddNewtonsoftJson(op => op.SerializerSettings.ReferenceLoopHandling
            = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
builder.Services.AddControllers()
    .AddFluentValidation(options =>
    {
        options.RegisterValidatorsFromAssembly(Assembly.GetExecutingAssembly());
    });

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
// Swagger
builder.Services.AddSwaggerGen();
// Register Dependency Injection Service Extension
builder.Services.AddDependencyInjection();

// Add services to the container
var _logger = new LoggerConfiguration()
    .ReadFrom.Configuration(builder.Configuration)
    .Enrich.FromLogContext()
    .CreateLogger();
builder.Logging.ClearProviders();
builder.Logging.AddSerilog(_logger);

builder.Host.UseSerilog((ctx, lc) => lc
    .WriteTo.Console()
    .ReadFrom.Configuration(ctx.Configuration));

builder.Services.AddHttpClient();

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("../swagger/v1/swagger.json", "My-APP API");
});

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
w51jfk4q

w51jfk4q1#

此错误消息告诉我们SwaggerJSON文件格式不正确,例如缺少逗号、括号不匹配、属性名称不正确等等。
我们可以从https://site_name/swagger/v1/swagger.json查看JSON文件,并使用该工具查看它是否完整。
我们通常使用Swashbuckle.AspNetCore NuGet包,它可以自动生成Swagger文档,避免手动编写Swagger JSON文件时出错。

相关问题