Swashbuckle - 将模型和示例值从另一个项目的模型添加到 Swagger UI

Bru*_*ppe 6 .net c# swagger visual-studio-2015 swashbuckle

我正在使用 Swagger 来记录我的.NET C#API,当我的模型在另一个项目上时,Swagger 只是崩溃并且不加载任何东西。

当我WebAPI从 Visual Studio加载示例项目时,它使用同一项目中的模型并且可以正常工作:

Visual Studio 示例项目示例图像

但是,当我使用其他项目中的模型时,它会在加载任何内容之前崩溃。

我有一个 API 项目和一个业务项目。我的模型是在我的商业项目中存储(并在其他项目之间共享,因此需要)的视图模型。

有什么方法可以向 Swagger 表明我的模型定义在哪里?

Jan*_*ana 7

我在使用 Swashbuckle 5.6.0 时遇到了同样的问题,并设法修复如下。通过更改项目属性,在包含项目的模型对象上启用 XML 文档文件,如下所示。

在此输入图像描述

然后进入api项目的SwaggerConfig.cs文件,添加模型对象项目的xml注释文件,如下。

c.IncludeXmlComments(string.Format(@"{0}\bin\WebApplication1.XML", System.AppDomain.CurrentDomain.BaseDirectory));
// New code line                            
c.IncludeXmlComments(string.Format(@"{0}\bin\core.XML", System.AppDomain.CurrentDomain.BaseDirectory));
Run Code Online (Sandbox Code Playgroud)

现在,您将在 swagger 文档上看到模型属性的 xml 注释。


小智 2

我最近在处理托管在 IIS 上的 Web API 项目时处理了类似的情况。我需要为所有视图模型和来自两个不同项目的模型启用 xml 文档。

下面总结一下工作的主要步骤:

  1. 为相关项目启用XML文档(参考这里
  2. 对于每个项目,首先构建它,然后将 xml 文件包含在项目中。将文件“Copy to Output Directory”的属性设置为“Copy is newer”,以确保将其复制到服务器的bin文件夹中。
  3. 在 Swagger 配置中,调用 IncludeXmlComments() 以包含 Simon88 建议的 XML 文档文件。

关键点是确保所有 xml 文档文件都复制到主机服务器的 bin 文件夹中,并且 Swagger UI 知道它们在哪里:-)。

顺便说一下,此类问题很少有类似的问题/答案。一个在这里

希望能帮助到你。