C# ASP.NETWebAPI虚张声势如何忽略HttpRequestMessage

C# ASP.NETWebAPI虚张声势如何忽略HttpRequestMessage,c#,asp.net,asp.net-web-api2,swagger,swashbuckle,C#,Asp.net,Asp.net Web Api2,Swagger,Swashbuckle,我正在使用Swashback为API生成文档。我的控制器方法如下所示: [ResponseType(typeof(CategoryCollectionModel))] public HttpResponseMessage Get(HttpRequestMessage request, [FromUri]Paging paging) { var input = new CategoriesListQuery.Input { Page = pa

我正在使用Swashback为API生成文档。我的控制器方法如下所示:

[ResponseType(typeof(CategoryCollectionModel))]
        public HttpResponseMessage Get(HttpRequestMessage request, [FromUri]Paging paging)
        {
            var input = new CategoriesListQuery.Input { Page = paging.Page, Size = paging.Size };
            var result = this.queryInvoker.Execute<CategoriesListQuery.Input, CategoriesListQuery.Result>(input);
            var items = Mapper.Map<CategoryCollectionModel>(result);

            return request.CreateResponse(HttpStatusCode.OK, items);
        }
[ResponseType(typeof(CategoryCollectionModel))]
公共HttpResponseMessage获取(HttpRequestMessage请求,[FromUri]分页)
{
var input=newcategorieslistquery.input{Page=paging.Page,Size=paging.Size};
var result=this.queryInvoker.Execute(输入);
var items=Mapper.Map(结果);
返回请求.CreateResponse(HttpStatusCode.OK,items);
}

Swashback将
HttpRequestMessage
视为生成的文档中的一个参数。是否有方法将Swashback配置为忽略
HttpRequestMessage
,因为它仅包含在签名中用于测试?

请参阅讨论。简而言之,不要像在输入参数中那样传入
HttpRequestMessage
,而是模拟
{controller}.Request
属性。

我从“”中找到了一个解决方案

总结:

在Swashblock中,您可以插入操作“过滤器”,用于 更改发出的数据–过滤器被传递到 正在发出操作,您可以使用 突然出现。那时我所要做的就是创建一个过滤器来查找 并从结果中删除相应的数据。我 结果是

有了这个类,我只需要把它插入到大摇大摆中 配置文件如下所示

c.操作过滤器();

为我工作。谢谢“”

我很好奇为什么要将请求作为参数传递以生成响应?为什么不直接使用
returnrequest.CreateResponse(HttpStatusCode.OK,items)
并放弃将请求作为参数传递?这只是为了测试目的,我更喜欢这样,而不是模仿
这个。请求
     public class IgnoreHttpRequestMessageOperationFilter : IOperationFilter
  {
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, 
                      ApiDescription apiDescription)
    {
      apiDescription.ParameterDescriptions
        .Where(desc => desc.ParameterDescriptor.ParameterType 
            == typeof(HttpRequestMessage))
        .ToList()
        .ForEach(param =>
        {
          var toRemove = operation.parameters
            .SingleOrDefault(p => p.name == param.Name);

          if (null != toRemove)
            operation.parameters.Remove(toRemove);
        });
    }
  }
c.OperationFilter<IgnoreHttpRequestMessageOperationFilter>();