public override void OnResultExecuted(ResultExecutedContext context) { if (_suppressResultFiltering) return; HttpResponseBase response = context.HttpContext.Response; CaptureFilter filter = (response.Filter as CaptureFilter); if (filter == null) return; response.Flush(); response.Filter = _filter; string content = filter.GetContents(response.ContentEncoding); response.Write(content); if (context.Exception == null) UpdateCachedValue(_cacheKey, content); }
public virtual void OnResultExecuted(ResultExecutedContext context) { }
private static ResultExecutedContext InvokeActionResultFilter(IResultFilter filter, ResultExecutionContext context, Func<ResultExecutedContext> continuation) { filter.OnResultExecuting(context); if (context.Cancel) return new ResultExecutedContext(context, null); bool wasError = false; ResultExecutedContext postContext = null; try { postContext = continuation(); } catch (ThreadAbortException) { // This type of exception occurs as a result of Response.Redirect(), but we special-case so that // the filters don't see this as an error. postContext = new ResultExecutedContext(context, null); filter.OnResultExecuted(postContext); throw; } catch (Exception ex) { wasError = true; postContext = new ResultExecutedContext(context, ex); filter.OnResultExecuted(postContext); if (!postContext.ExceptionHandled) throw; } if (!wasError) filter.OnResultExecuted(postContext); return postContext; }