SetActualResponseType在具有不同路由的同一控制器中使用相同的方法

时间:2015-09-14 19:19:41

标签: c# .net asp.net-web-api xml-documentation

情景:

Web Api 2.2

我不知道是否是最好的方法,但这已经在生产中,我无法改变它。

我有一个具有相同动词(几个GET)但具有不同路线的控制器。 例如,控制器foo:

 [Route("foo/{Id}")]
    public HttpResponseMessage Get(int Id) //Return objectA

[Route("foo/Search")]
public HttpResponseMessage Get(string criteria) //Return objectB

[Route("foo/Anything")]
public HttpResponseMessage Get(anything bar) //Return objectC

现在我正在创建Web API帮助文档,并在我的HelpPageConfig.cs中 我需要指定响应类型(所有方法都不同):

config.SetActualResponseType(typeof(objectA), "foo", "Get");

问题:

是否可以与其他方法相同?当我尝试时,它说错误:"定义已经存在"

1 个答案:

答案 0 :(得分:1)

一种方法是使用SetActualResponseType的另一个重载,它接受参数名称:

config.SetActualResponseType(typeof(ObjectA), "Home", "Get", "Id");
config.SetActualResponseType(typeof(ObjectB), "Home", "Get", "criteria");
config.SetActualResponseType(typeof(ObjectC), "Home", "Get", "bar");

但是,既然您使用的是Web Api 2.2,请忘记SetActualResponseType并执行以下操作:

[Route("foo/{Id}")]
[ResponseType(typeof(ObjectA))]
public HttpResponseMessage Get(int Id) //Return objectA

[Route("foo/Search")]
[ResponseType(typeof(ObjectB))]
public HttpResponseMessage Get(string criteria) //Return objectB

[Route("foo/Anything")]
[ResponseType(typeof(ObjectC))]
public HttpResponseMessage Get(anything bar) //Return objectC