在我的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();
1条答案
按热度按时间w51jfk4q1#
此错误消息告诉我们SwaggerJSON文件格式不正确,例如缺少逗号、括号不匹配、属性名称不正确等等。
我们可以从
https://site_name/swagger/v1/swagger.json
查看JSON文件,并使用该工具查看它是否完整。我们通常使用
Swashbuckle.AspNetCore
NuGet包,它可以自动生成Swagger文档,避免手动编写Swagger JSON文件时出错。