public void OnException(ExceptionContext context)
        {
            Precondition.Require(context, () => Error.ArgumentNull("context"));
            Controller controller = (context.Controller as Controller);
            if (controller == null || context.Handled || !context.Context.IsCustomErrorEnabled)
                return;

            Exception exception = context.Exception;
            if (new HttpException(null, exception).GetHttpCode() != 500)
                return;

            if (exception is TargetInvocationException)
                exception = exception.InnerException;

            if (!_type.IsInstanceOfType(exception))
                return;
            
            ErrorHandlerInfo model = new ErrorHandlerInfo(context.Exception);
            context.Handled = true;
            context.Context.Response.Clear();

			if(!context.IsChild)
				context.Context.Response.StatusCode = 500;

            if (String.IsNullOrEmpty(_view))
                context.Result = EmptyResult.Instance;
            else
                context.Result = new ViewResult() {
                    TempData = controller.TempData,
                    ViewData = new ViewDataDictionary<ErrorHandlerInfo>(model), 
                    ViewName = View 
				};
        }
		public void OnException(ExceptionContext ctx)
		{
			HttpContextBase context = ctx.Context;

			// We should remove any response filters since
			// we'll get invalid response if an exception is thrown.
			if (context.Items.Contains(COMPRESS_ENABLED_KEY))
			{
				TryRemoveHeaders(context);
				context.Response.Filter = _original;
			}
		}
        protected virtual ExceptionContext InvokeExceptionFilters(
            ControllerContext context, Exception exception, 
			ICollection<IExceptionFilter> filters)
        {
            Precondition.Require(exception, () => Error.ArgumentNull("exception"));
            Precondition.Require(filters, () => Error.ArgumentNull("filters"));

            ExceptionContext filterContext = new ExceptionContext(context, exception);
            foreach (IExceptionFilter filter in filters)
                filter.OnException(filterContext);

            return filterContext;
        }