Найти коды состояния API для контроллера ActionModel - PullRequest
0 голосов
/ 09 января 2020

Как улучшить этот вопрос, как найти все существующие коды состояния для действия ActionModel в ApplicationModelProvider, прежде чем добавлять их?

В настоящее время просматривает action.Filters[0].StatusCode в отладчике, однако не может получить доступ к свойству в реальном коде , Перед тем, как добавить его, нужно посмотреть, какие коды состояния уже существуют для действий контроллера API во всех списках array .

сделал фильтры [0] в качестве теста

Net Базовый API: сделать глобальный параметр ProducesResponseType или автоматизировать

    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>());
    ...
}

1 Ответ

0 голосов
/ 10 января 2020

Сначала приведите как ProducesResponseTypeAttribute и получите StatusCode. См. Код ниже,

foreach (var filter in action.Filters)
{
    if (filter.GetType() == typeof(ProducesResponseTypeAttribute))
    {
         var producesResponseTypeAttribute = (filter as ProducesResponseTypeAttribute)
         var statusCode = producesResponseTypeAttribute.StatusCode;
...