查找控制器ActionModel的API状态代码

问题描述 投票:0回答:1

对此问题进行了改进,在添加它们之前,如何在ApplicationModelProvider中查找ActionModel操作的所有现有状态代码?

当前正在调试器中浏览action.Filters[0].StatusCode,但是无法访问实际代码中的属性。在添加它之前,需要查看所有array列表中API控制器操作的状态码已经存在。

已过滤[0]作为测试

Net Core API: Make ProducesResponseType Global Parameter or Automate

    foreach (ControllerModel controller in context.Result.Controllers)
    {
        foreach (ActionModel action in controller.Actions)
        {
            Type returnType = action.ActionMethod.ReturnType.GenericTypeArguments[0].GetGenericArguments()[0];

            action.Filters.Add(new ProducesResponseTypeAttribute(StatusCodes.Status510NotExtended));
            action.Filters.Add(new ProducesResponseTypeAttribute(returnType, StatusCodes.Status200OK));
            action.Filters.Add(new ProducesResponseTypeAttribute(returnType, StatusCodes.Status500InternalServerError));
        }
    }

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    ...   
    services.TryAddEnumerable(ServiceDescriptor.Transient<IApplicationModelProvider, ProduceResponseTypeModelProvider>());
    ...
}

对此问题进行了改进,在添加它们之前,如何在ApplicationModelProvider中找到ActionModel操作的所有现有状态代码?当前正在查看action.Filters [0] ....

c# .net .net-core asp.net-core-2.0
1个回答
0
投票

首先强制转换为ProducesResponseTypeAttribute,然后获取StatusCode参见下面的代码,

© www.soinside.com 2019 - 2024. All rights reserved.