如何在Swagger中显示类属性的XML注释(MVC 6 Web API JsonResult)

时间:2017-01-31 12:26:21

标签: asp.net-web-api2 asp.net-core-mvc swagger swagger-ui

我已经向我的班级成员添加了XML评论,但Swagger不会在UI中显示它们。难道我做错了什么?

  

更新:您似乎无法记录您的模型类   带有@ApiModel和@ApiModelProperty注释的Swashbuckle(5.5.3)和   xml注释也不起作用。

{{1}}

enter image description here

Swagger配置

{{1}}

我已经创建了XML注释文件,但是在Swagger UI的Model部分中没有看到注释。

4 个答案:

答案 0 :(得分:5)

仅添加评论是不够的。

您需要构建一个XML文档文件,并且需要告诉swagger在您的配置中找到它的位置。

转到项目构建属性并检查XML Documentation File

然后在你的swagger配置中添加以下内容

c.IncludeXmlComments(string.Format(@"{0}\bin\MyApi.XML", 
     System.AppDomain.CurrentDomain.BaseDirectory))

答案 1 :(得分:3)

就我而言,这是因为我的模型与服务位于不同的项目中。

我在Startup.cs中添加了另一个IncludeXmlComments调用,它可以正常工作:

c.IncludeXmlComments(xmlPath2); // add Other proj xml comments file, this is needed because it's in a different project.

答案 2 :(得分:1)

我也在努力解决这个问题。帮助我的是把它当作财产。

/// <summary>
/// Radius of the circle
/// </summary>
[DataMember]
public double radius;

/// <summary>
/// Colour of the circle
/// </summary>
[DataMember]
public double farba { get; set; }

/// <summary>
/// Some random variable
/// </summary>
[DataMember]
double random { get; set; }

结果

Circle {
radius (number, optional),
farba (number, optional): Colour of the circle ,
random (number, optional)
}

正如您所看到的,只有公共财产有描述。

希望它会有所帮助。

答案 3 :(得分:1)

如果将字段转换为属性,也可以使用。

public class MyData
{
    /// <summary>
    /// My code
    /// </summary>
    public string code { get; set; }
}

问题似乎是Swagger不记录字段,只记录属性。如果您检查生成的XML,您将看到该变量将具有F或P前缀。 https://msdn.microsoft.com/en-us/library/fsbx0t7x(v=vs.110).aspx