迁移到.NET Core 3.0之后。我在配置摇摇欲坠时遇到问题。
以下是我的配置。
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.MvcJsonOptions' 'Microsoft.AspNetCore.Mvc.Formatters.Json
有解决方案吗?
答案 0 :(得分:12)
关于aspnet / AspNetCore github存储库的讨论如下:Restore MvcJsonOptions to ASP.NET Core 3.0 as a type forward?
这表明问题已解决。
我建议您确保已安装最新的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是最新的。
答案 1 :(得分:0)
In Net Core 3.0:
我正在尝试配置ReferenceLoopHandling
,但对我来说,所选答案不起作用,所以我找到了这种替代方法,请在ConfigureServices中添加:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddNewtonsoftJson(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
}