c# - 如何在 ASP.NET Core 的 Swagger 中包含 XML 注释文件

标签 c# asp.net asp.net-core swagger-ui

我需要 Swagger 生成 API 文档,包括用于测试操作的 UI。

在我的项目中使用 ASP.NET 时,生成了 deps XML 文件,一切正常,如下所示:

enter image description here

但是当我在我的项目中使用 ASP.NET Core 时,没有生成 deps XML 文件。它只是生成我的项目评论 XML 文件,如下所示:

enter image description here

当我将项目部署到 IIS 时,项目 XML 不在部署文件列表中。

最佳答案

对于 .Net Core 2 到 3.1 版本,它略有不同,对于那些使用较新版本遇到它的人,您可以创建自己的 private void ConfigureSwagger(IServiceCollection services) 构造函数,添加对 swagger services.AddSwaggerGen(c => { c.SwaggerDoc(/*populate with your info */);然后定义一个新参数,它将成为您的 XML 文档的路径: var filePath = Path.Combine(AppContext.BaseDirectory, "YourApiName.xml"); c.IncludeXmlComments(filePath);.

它应该看起来像这样:

private void ConfigureSwagger(IServiceCollection services)
    {
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info
            {
                Version = "v1",
                Title = "YourApiName",
                Description = "Your Api Description.",
                TermsOfService = "None",
                Contact = new Contact
                    {Name = "Contact Title", Email = "contactemailaddress@domain.com", Url = ""}
            });
            var filePath = Path.Combine(AppContext.BaseDirectory, "YourApiName.xml");
            c.IncludeXmlComments(filePath);
        });
    }

为此,您需要确保构建的输出已检查文档文件(见红色箭头)并正确设置路径。我注意到您可以去掉预填充的路径,只使用 bin\YourApiName.xml,如下所示:

Image showing how to enable XML documentation in Visual Studio 2017 IDE

更新:如果这些更改没有按预期工作,请检查配置。在示例中,配置设置为调试。如果您从不同的环境 (env) 运行,您可能需要检查这些设置是否适用于该环境。

更新 2:自 OpenAPI 发布以来,我想我应该更新我的示例(下方)以显示对 this specification 的更准确引用这应该遵循类似于:

services.AddSwaggerGen(o =>
            {
                o.SwaggerDoc("v1",
                    new OpenApiInfo
                    {
                        Title = "Your API Name",
                        Description = "Your API Description",
                        Version = "v1",
                        TermsOfService = null, 
                        Contact = new OpenApiContact 
                        {
                            // Check for optional parameters
                        },
                        License = new OpenApiLicense 
                        {
                            // Optional Example
                            // Name = "Proprietary",
                            // Url = new Uri("https://someURLToLicenseInfo.com")
                        }
                    });
            });

关于c# - 如何在 ASP.NET Core 的 Swagger 中包含 XML 注释文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44643151/

相关文章:

c# - 将字节数组从 PHP 发送到 WCF

c# - Google Adword 和 asp.net 母版页

asp.net-core - 在中间件中定义一个变量可用于以下中间件

c# - 如何在我的新 .Net Core 项目中修复 DbUpdateConcurrencyException?

asp.net-core - ASPX.NET Core - IIS 服务器上的随机 502 错误

c# - 工作流/工作流服务组合?如何在 'normal' 工作流上使用 Receive 事件?

c# - CodeContracts - 误报

c# - 如何使用我自己的逻辑对列表进行排序(不是按字母顺序或数字顺序)

c# - 专注于列表框中的最后一个条目

c# - 使用表单输入将文件上传到网络服务时遇到问题