C#Web API帮助文档IHttpActionResult

Kal*_*ade 18 c# rest asp.net-web-api2

我有一个C#Web API,我正在尝试使用自动创建的帮助文档来使用IHttpActionResult.我删除了下面的例子,因此它更容易阅读.

对于该对象,下面是一个简单的例子.BusinessObject只是一个包装器.CollectionBase是CollectionBase : ObservableCollection<T>, ILoadable where T : BusinessObject.它是一个较旧的代码库,自动生成但重用它.

    public class Value : BusinessObject
    {
        public int Id { get; set; }
    }
    public class Values : CollectionBase<Value>
    {
        public override Value LoadObject(System.Data.IDataRecord record)
        {
            return new Value();
        }
    }
Run Code Online (Sandbox Code Playgroud)

对于API方面的事情.以下作品.

public class Values : ApiController
{
    public IEnumerable<Value> GetThis()
    {
        Values values = new Values();
        return values;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当我尝试时,问题出现了

    public IHttpActionResult GetThis()
    {
        Values values = new Values();
        return Ok(values);
    }
Run Code Online (Sandbox Code Playgroud)

它不承认它应该使用不同的返回类型.'资源描述'最终是IHttpActionResult而没有样本输出.现在我可以补充一下

config.SetActualResponseType(typeof(IEnumerable<Value>), "Values", "GetThis");
Run Code Online (Sandbox Code Playgroud)

它将显示一个示例输出,但"资源描述"仍然是IHttpActionResult.这是我遇到的主要问题.我想使用IHttpActionResult,因为它非常容易使用,并且如果需要非常容易返回错误代码.我只想能够自动构建文档.

更新:经过一些进一步的研究,我对这篇文章做得很好. Web API帮助页面上的资源描述显示"无".

基本上,您将响应类型属性添加到方法中.

[ResponseType(typeof(IEnumerable<Value>))]
public IHttpActionResult GetThis()
{
    Values values = new Values();
    return Ok(values);
}
Run Code Online (Sandbox Code Playgroud)

虽然这在技术上有效,但我已修改现有代码以使用它.如果有办法让它以某种方式自动解决它仍然会很好.不确定这是否可行.

Kal*_*ade 31

这适用于我正在做的事情.每次都必须包含它有点乏味,但它允许我在必要时返回错误代码并保留帮助文档功能.

[ResponseType(typeof(IEnumerable<Value>))]
public IHttpActionResult GetThis()
{
    Values values = new Values();
    return Ok(values);
}
Run Code Online (Sandbox Code Playgroud)

Web API帮助页面上的资源描述显示"无".