2

我在 VS2013 中有一个解决方案,其中包含几个类库和一个 Web API 项目。我在设置 Swagger UI 时遇到了一些问题。首先,当我为我的 Web API 项目设置 swashbuckle 时,我只能指向一个文档 XML 文件。有没有办法指向包含多个 XML 文件,这样 Swagger 不仅可以为我在控制器中的路由获取文档,还可以从我的其他项目中获取域对象?这是我来自 SwaggerConfig.cs 的代码

SwaggerSpecConfig.Customize
    (
        c =>
        {
            c.IncludeXmlComments(Path.Combine(dirPath, projName + ".xml"));
        }
    );

如果我添加多个 XML 文件,它只会从 IncludeXmlComments 中获取最后一个文件。

其次,我在以 JSON 格式返回时,我的 DTO 使用的是驼峰式大小写

formats.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

但是,当我在 Swagger UI 的响应类中查看响应模型和模型架构时,我看到的是确切的类属性名称,而不是在命中端点时返回的 JSON 架构。有没有办法在 Swagger UI 文档页面中显示确切的 JSON 模式?

4

3 回答 3

1

我使用的是 5.6.0 版本,并且多个 XML 文档适用于我:

var dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"));
foreach (var fi in dir.EnumerateFiles("*.xml"))
{
    c.IncludeXmlComments(fi.FullName);
}
于 2017-07-26T17:16:02.023 回答
0

像这样添加多个 XML 文件配置招摇。

       SwaggerSpecConfig.Customize(c =>
        {
            // single XML Comment Files
            //c.IncludeXmlComments(GetXmlCommentsPath());

            // Multiple XML Comment Files
            string[] paths = GetXmlCommentsPaths();
            foreach (string xmlCommentsPath in paths)
            {
                c.OperationFilter(new ApplyActionXmlComments(xmlCommentsPath))
                    .ModelFilter(new ApplyTypeXmlComments(xmlCommentsPath));
            }
        });
于 2014-10-01T06:01:34.993 回答
0

在 4.1 版之后你可以这样写:

c.IncludeXmlComments("File1_Path");
c.IncludeXmlComments("File2_Path"));

另请参见此处

于 2015-12-29T12:10:57.683 回答