Asp.net mvc 4 每个api版本的招摇过市xml注释

Asp.net mvc 4 每个api版本的招摇过市xml注释,asp.net-mvc-4,asp.net-web-api2,swagger-2.0,swashbuckle,Asp.net Mvc 4,Asp.net Web Api2,Swagger 2.0,Swashbuckle,我已经在visual studio 2015中使用创建了一个新的asp.net web api 2项目 我正在使用Swagger(Swashback 5.0)编写API文档,并希望每个版本都有文档,我设法获得了这个文档,但Swagger ui显示了来自两个版本的相同xml注释 版本1和版本2的api/view上的xml注释存在一些不同的注释,这些注释不会出现在swagger ui上 版本1 版本2 public类SwaggerConfig { 公共静态无效寄存器() { var thissa

我已经在visual studio 2015中使用创建了一个新的asp.net web api 2项目

我正在使用Swagger(Swashback 5.0)编写API文档,并希望每个版本都有文档,我设法获得了这个文档,但Swagger ui显示了来自两个版本的相同xml注释

版本1和版本2的api/view上的xml注释存在一些不同的注释,这些注释不会出现在swagger ui上

版本1

版本2

public类SwaggerConfig
{
公共静态无效寄存器()
{
var thissassembly=typeof(SwaggerConfig).Assembly;
全局配置
.EnableSwagger(c=>
{
c、 多重分化(
(apiDesc,TARGETAPIVATION)=>ResolveVersionSupportByRouteConstraint(apiDesc,TARGETAPIVATION),
(vc)=>
{
vc.Version(“2”,“招摇过市API V2”);
vc.Version(“1”,“招摇过市API V1”);
});
c、 includexmlcoments(getxmlcomentspath());
})
.EnableSwaggerUi(c=>
{
c、 EnableDiscoveryUrlSelector();
});
}
私有静态字符串GetXmlCommentsPath()
{
返回String.Format(@“{0}\bin\chartofcounts.Api.XML”,AppDomain.CurrentDomain.BaseDirectory);
}
私有静态bool ResolveVersionSupportByRouteConstraint(ApiDescription apiDesc,string targetApiVersion)
{
var attr=apiDesc.ActionDescriptor.GetCustomAttributes().FirstOrDefault();
if(attr==null)
{
返回true;
}
int目标版本;
if(int.TryParse(目标版本、目标版本外))
{
返回attr.AllowedVersion==targetVersion;
};
返回true;
}
}
版本1控制器

[VersionedRoute("api/view", 1)]
public class ViewController : ApiController
{
    private IChartManager _chartManager;

    public ViewController(IChartManager chartManager)
    {
        _chartManager = chartManager;
    }

    /// <summary>
    /// Returns a single view
    /// </summary>
    /// <param name="Id">Used to identify view. {Only Guid Accepted} </param>
    /// <returns></returns>
    public async Task<HttpResponseMessage> GetAsync(Guid Id)
    {
        Chart chart = await _chartManager.GetChartByIdAsync(Id);
        return Request.CreateResponse(HttpStatusCode.OK, chart);
    }
}
[VersionedRoute("api/view", 2)]
public class Viewv2Controller : ApiController
{
    private IChartManager _chartManager;

    public Viewv2Controller(IChartManager chartManager)
    {
        _chartManager = chartManager;
    }

    /// <summary>
    /// Returns a single view of the chart
    /// </summary>
    /// <param name="Id">Used to identify view</param>
    /// <returns></returns>
    public async Task<HttpResponseMessage> GetAsync(string Id)
    {
        Guid newGuidId;
        if (Guid.TryParse(Id, out newGuidId))
        {
            Chart chart = await _chartManager.GetChartByIdAsync(newGuidId);
            return Request.CreateResponse(HttpStatusCode.OK, chart);
        }

        return Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Invalid Guid value for Parameter Id.");
    }
}
[versionedroote(“api/view”,1)]
公共类ViewController:ApicController
{
私人IChartManager(图经理);;
公共视图控制器(IChartManager图表管理器)
{
_chartManager=chartManager;
}
/// 
///返回单个视图
/// 
///用于标识视图。{仅接受Guid}
/// 
公共异步任务GetAsync(Guid Id)
{
Chart Chart=wait_chartManager.GetChartByIdAsync(Id);
返回请求.CreateResponse(HttpStatusCode.OK,图表);
}
}
版本2 API控制器

[VersionedRoute("api/view", 1)]
public class ViewController : ApiController
{
    private IChartManager _chartManager;

    public ViewController(IChartManager chartManager)
    {
        _chartManager = chartManager;
    }

    /// <summary>
    /// Returns a single view
    /// </summary>
    /// <param name="Id">Used to identify view. {Only Guid Accepted} </param>
    /// <returns></returns>
    public async Task<HttpResponseMessage> GetAsync(Guid Id)
    {
        Chart chart = await _chartManager.GetChartByIdAsync(Id);
        return Request.CreateResponse(HttpStatusCode.OK, chart);
    }
}
[VersionedRoute("api/view", 2)]
public class Viewv2Controller : ApiController
{
    private IChartManager _chartManager;

    public Viewv2Controller(IChartManager chartManager)
    {
        _chartManager = chartManager;
    }

    /// <summary>
    /// Returns a single view of the chart
    /// </summary>
    /// <param name="Id">Used to identify view</param>
    /// <returns></returns>
    public async Task<HttpResponseMessage> GetAsync(string Id)
    {
        Guid newGuidId;
        if (Guid.TryParse(Id, out newGuidId))
        {
            Chart chart = await _chartManager.GetChartByIdAsync(newGuidId);
            return Request.CreateResponse(HttpStatusCode.OK, chart);
        }

        return Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, "Invalid Guid value for Parameter Id.");
    }
}
[versionedroote(“api/view”,2)]
公共类ViewV2控制器:ApiController
{
私人IChartManager(图经理);;
公共视图v2控制器(IChartManager图表管理器)
{
_chartManager=chartManager;
}
/// 
///返回图表的单个视图
/// 
///用于标识视图
/// 
公共异步任务GetAsync(字符串Id)
{
Guid newGuidId;
if(Guid.TryParse(Id,out-newGuidId))
{
Chart Chart=wait_chartManager.GetChartByIdAsync(newGuidId);
返回请求.CreateResponse(HttpStatusCode.OK,图表);
}
返回请求.CreateErrorResponse(HttpStatusCode.NotAcceptable,“参数Id的Guid值无效”);
}
}