InvokeAsync()方法已成功使用SecureSuccessStatusCode()引发异常,尽管它没有被我的自定义Exception过滤器捕获。
附带的代码。任何帮助将不胜感激
[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