Перезапустите ActionMethod в классе фильтров исключений WebApi C# - PullRequest
0 голосов
/ 25 февраля 2020

Я создал пользовательский ExceptionFilter для перехвата всех исключений метода действия контроллера WebApi. Можно ли получить метод действия в методе исключения и повторно вызвать его оттуда после выполнения требуемого исправления кода

Вот код:

    public class ExceptionHandlerFilterAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {
        try
        {
            var ex = context.Exception;
            string ControllerName = string.Format("{0}Controller-{1}", context.ActionContext.ControllerContext.ControllerDescriptor.ControllerName, context.ActionContext.ActionDescriptor.ActionName);
            SPConnection.InsertRecordToTableErrorLog(ex.Message, ex.StackTrace, ControllerName, ex.GetType().Name);

            **SPConnection.SharepointClientContext = null;**

            **// reinvoke ActionMethod here??**


            base.OnException(context);
        }
        catch (Exception ex) {
            throw ex;
        }
    }
}

Метод Api Controller который сгенерирует необработанное исключение:

        [Authorize]
    [HttpPost]
    [Route("update")]
    public HttpResponseMessage update(Update up)
    {
        bool result = _iMembersBL.Update(up);
        if (result)
            return Request.CreateResponse(HttpStatusCode.OK, "Success");
        else
            return Request.CreateResponse(HttpStatusCode.OK, "Failed");
    }
...