.NET Core 3.0に移行した後。 Swaggerの構成に問題があります。
以下は私の設定です。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0).AddNewtonsoftJson();
services.AddSwaggerGen(setup =>
{
setup.SwaggerDoc(
"v1",
new Info
{
Title = "Docker",
Version = "v1"
});
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
Configuration.SwaggerOptions swaggerOptions = new Configuration.SwaggerOptions();
_configuration.GetSection("SwaggerOptions").Bind(swaggerOptions);
app.UseSwagger(options =>
{
options.RouteTemplate = swaggerOptions.JsonRoot;
});
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint(swaggerOptions.UiEndpoint, swaggerOptions.ApiDescription);
});
}
以下は例外です
TypeLoadException:アセンブリ 'Microsoft.AspNetCore.Mvc.Formatters.Jsonからタイプ' Microsoft.AspNetCore.Mvc.MvcJsonOptions 'を読み込めませんでした
これに対する解決策はありますか?
これを議論するaspnet/AspNetCore github repoに関する議論があります: MvcJsonOptionsをASP.NET Core 3.0にフォワードタイプとして復元しますか?
問題が解決したことを示しています。
最新のSwashbuckle.AspnetCoreパッケージがインストールされていることを確認することをお勧めします: https://www.nuget.org/packages/Swashbuckle.AspNetCore/
公式のasp.netコアドキュメントには、次のように記載されています。
Install-Package Swashbuckle.AspNetCore -Version 5.0.0-rc2
したがって、プレリリース版をインストールする必要があることをお勧めします。執筆時点では、4.Xのみが安定していて、5.0.0-rc3のみです。最新です。
In Net Core 3.0:
ReferenceLoopHandling
を構成しようとしていましたが、選択した回答が機能しなかったため、この代替案を見つけました。ConfigureServicesに次の行を追加してください:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddNewtonsoftJson(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
}