我有一个 .Net Core 2.2 OData API,我要为其实现 Swagger 文档。
我一直在关注这个示例:https://github.com/Microsoft/aspnet-api-versioning/tree/master/samples/aspnetcore/SwaggerODataSample
我已经让它工作到一定程度了。现在我面临着我的模型以循环方式相互引用的问题,让我解释一下:
注意:我使用 EFCore 代码优先方法来处理我的数据库。
我有这些模型(作为示例):Project、ProjectLocation、ProjectRegion。为了简短起见,我们称它们为 A、B 和 C。
A 引用了 B 和 C,如下所示:
public virtual ICollection<X> X{ get; set; }
Run Code Online (Sandbox Code Playgroud)
B 和 C 都直接引用 A,如下所示:
public A A{ get; set; }
Run Code Online (Sandbox Code Playgroud)
这些都是非常标准的关系数据库模型内容,但 SwaggerUI 似乎无法处理这个问题。
我收到的错误如下:
无法加载 API 定义。错误:获取错误:内部服务器错误 /swagger/v1/swagger.json
处理请求时发生未处理的异常。TypeLoadException:无法从程序集“Tc2fc56a7babe40419a678a075439246c.DynamicModels,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”加载类型“NCCRD.Services.DataV2.Database.Models.ProjectLocation”。
System.Signature.GetSignature(Void* pCorSig, int cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
如果需要,还可以使用堆栈跟踪。
我已尽可能阅读这两篇文章和所有参考链接,但没有找到有效的解决方案:
https://github.com/swagger-api/swagger-codegen/issues/741
https://github.com/swagger-api/swagger-codegen/issues/728
曾经看起来不错的解决方案是: https: //systemout.net/2017/04/07/swagger-asp-net-core-fixing-circular-self-references/,但这也没有效果。(我也联系作者寻求帮助)
当我从 B 或 C 中删除对 A 的引用时,SwaggerUI 就会正常加载。
如果有人能对此有所启发,我将非常感激。预先感谢您提供的任何帮助。
我安装了 RedisInsight v1.2.2,今天系统提示我升级到 v1.3.0。
问题是升级/安装过程尝试删除旧版本 (1.2.2) 并且需要我安装该版本时使用的 .msi,但我不再拥有该文件。而且现在我也找不到哪里可以下载。
任何人都可以提供下载RedisInsight v1.2.2的链接(redisinsight-win-1.2.2.msi)