Компонент исключения в представлении не попадает под фильтр пользовательских исключений - PullRequest
0 голосов
/ 12 февраля 2019

Метод InvokeAsync () успешно генерирует исключение с помощью EnsureSuccessStatusCode (), хотя мой настраиваемый фильтр исключений не получает его.

Прикрепленный код.Мы будем благодарны за любую помощь

[MyExceptionFilter()]
public async Task<IViewComponentResult> InvokeAsync()
    {
        HttpResponseMessage responseMessage = new HttpResponseMessage();
        string responseContent = string.Empty;
        List<SystemMenus> systemMenu = new List<SystemMenus>();

            using (CommonUtility commonUtility = new CommonUtility())
            {
                using (var client = commonUtility.getHttpClient(WebClientContentType.JSON,GetUserTokenId()))
                {
                    string systemMenuId = HttpContext.Request.Headers["systemMenuId"];
                    responseMessage =await client.GetAsync(new Uri(commonUtility.GetWebApiUrl() + "/api/Auth/GetSubMenuByMenuId?systemMenuId=" + systemMenuId));
                    responseContent = await responseMessage.Content.ReadAsStringAsync();
                    responseMessage.EnsureSuccessStatusCode();
                    systemMenu = (List<SystemMenus>)JsonConvert.DeserializeObject(responseContent, typeof(List<SystemMenus>));                  
                }
            }


        return await Task.FromResult((IViewComponentResult)View("_SubMenu", systemMenu));
    }

В моем фильтре исключений

открытый класс MyExceptionFilter: ExceptionFilterAttribute {#region Объявление

    Logger logger;
    #endregion

    #region Constructor
    public MyExceptionFilter ()
    {
        logger = ConfigUtility.getNlogConfig();
    }
    #endregion

    #region Public/Private Methods

    public override void OnException(ExceptionContext exContext)
    {
        string strStatusCode = string.Empty;


        if (exContext.Exception.GetType() == typeof(HttpRequestException))
        {
            HttpRequestException exception = (HttpRequestException)exContext.Exception;
            strStatusCode = exception.Message;
        }

        exContext.Result = new RedirectToActionResult("Error", "Error", new { statusCode = strStatusCode });
        return;
    }//end method
...