public override void OnException(HttpActionExecutedContext context)
        {
            Exception exp;
            try
            {
                var logLevel = GetLogLevel(context.Exception);
                _logException(context.Exception, logLevel);

                var error = ToError(context.Exception);
                var httpResponseMessage = new HttpResponseMessage
                {
                    StatusCode = GetStatusCode(context.Exception),
                    ReasonPhrase = context.Exception.Message,
                    RequestMessage = context.Request,
                    Content = new ObjectContent<Error>(error, new JsonMediaTypeFormatter(), "application/json"),                    
                };
                exp = new HttpResponseException(httpResponseMessage);
            }
            catch (Exception exception)
            {
                var e = new AggregateException(exception, context.Exception);
                _logException(e, LogLevel.SystemError);
                throw;
            }

            throw exp;
        }
        public override void OnException(HttpActionExecutedContext context)
        {
            if (MvcApplication.Logger != null && context.Exception != null)
            {
                MvcApplication.Logger.Error("ExceptionHandlingAttribute", context.Exception);
            }

            if (context.Exception is System.Data.DataException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content = new StringContent(context.Exception.Message),
                    ReasonPhrase = "Exception"
                });
            }

            //Log Critical errors
            Debug.WriteLine(context.Exception);

            throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
            {
                Content = new StringContent("An error occurred, please try again or contact the administrator."),
                ReasonPhrase = "Critical Exception"
            });
        }
        public override void OnException(HttpActionExecutedContext ctx)
        {
            var e = ctx.Exception;
            var exceptionType = e.GetType();

            try
            {
                if (handlers.ContainsKey(exceptionType))
                {
                    handlers[exceptionType](ctx, e);
                    return;
                }

                var baseType = handlers.Keys.FirstOrDefault(t => t.IsInstanceOfType(e));
                if (baseType != null)
                {
                    handlers[baseType](ctx, e);
                    return;
                }

                DefaultHandler(ctx, e);
            }
            catch (Exception)
            {
                //TODO: log
                //logger.ErrorException("Failed to properly handle error, further error handling is ignored", e);
            }
        }
Ejemplo n.º 4
0
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        if (actionExecutedContext.Response != null)
            actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");

        base.OnActionExecuted(actionExecutedContext);
    }
        public override void OnActionExecuted(HttpActionExecutedContext context)
        {
            if (context.Response == null) return;

            //don't need to set the cookie if they already exist
            if (context.Request.Headers.GetCookies(AngularAntiForgeryHelper.AngularCookieName).Any()
                && context.Request.Headers.GetCookies(AngularAntiForgeryHelper.CsrfValidationCookieName).Any())
            {
                return;
            }

            string cookieToken, headerToken;
            AngularAntiForgeryHelper.GetTokens(out cookieToken, out headerToken);

            //We need to set 2 cookies: one is the cookie value that angular will use to set a header value on each request,
            // the 2nd is the validation value generated by the anti-forgery helper that we use to validate the header token against.

            var angularCookie = new CookieHeaderValue(AngularAntiForgeryHelper.AngularCookieName, headerToken)
                {
                    Path = "/",
                    //must be js readable
                    HttpOnly = false,
                    Secure = GlobalSettings.UseSSL
                };

            var validationCookie = new CookieHeaderValue(AngularAntiForgeryHelper.CsrfValidationCookieName, cookieToken)
            {
                Path = "/",
                HttpOnly = true,
                Secure = GlobalSettings.UseSSL
            };

            context.Response.Headers.AddCookies(new[] { angularCookie, validationCookie });
        }
 public override void OnException(HttpActionExecutedContext context)
 {
     if (context.Exception is ValidationException)
     {
         RespondWithBadRequest(context);
     }
 }
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Exception != null)
            {

                var exception = actionExecutedContext.Exception;
                var actionName = actionExecutedContext.ActionContext.ActionDescriptor.ActionName;
                var controllerName = actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor.ControllerName;

                string resourceFile = String.IsNullOrEmpty(LocalResourceFile) 
                                        ? Localization.ExceptionsResourceFile 
                                        : LocalResourceFile;

                string key = String.IsNullOrEmpty(MessageKey) ? controllerName + "_" + actionName + ".Error" : MessageKey;

                var response = new HttpResponseMessage
                                        {
                                            StatusCode = HttpStatusCode.InternalServerError,
                                            ReasonPhrase = Localization.GetString(key, resourceFile)
                                        };
                
                actionExecutedContext.Response = response;

                Exceptions.LogException(exception);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Called when the action is executed.
        /// </summary>
        /// <param name="actionExecutedContext">The action executed context.</param>
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            base.OnActionExecuted(actionExecutedContext);

              if (!actionExecutedContext.Response.IsSuccessStatusCode) {
            return;
              }

              object responseObject;
              if (!actionExecutedContext.Response.TryGetContentValue(out responseObject)) {
            return;
              }

              var queryable = ApplySelectAndExpand(responseObject as IQueryable, actionExecutedContext.Request);
              if (queryable != null) {
            // if a select or expand was encountered we need to
            // execute the DbQueries here, so that any exceptions thrown can be properly returned.
            // if we wait to have the query executed within the serializer, some exceptions will not
            // serialize properly.
            var rQuery = Enumerable.ToList((dynamic) queryable);

            var formatter = ((dynamic) actionExecutedContext.Response.Content).Formatter;
            var oc = new ObjectContent(rQuery.GetType(), rQuery, formatter);
            actionExecutedContext.Response.Content = oc;
              }

              Object tmp;
              actionExecutedContext.Request.Properties.TryGetValue("MS_InlineCount", out tmp);
              var inlineCount = (Int64?) tmp;

              if (inlineCount.HasValue) {
            actionExecutedContext.Response.Headers.Add("X-InlineCount", inlineCount.ToString());
              }
        }
Ejemplo n.º 9
0
        public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
        {
            base.OnException(actionExecutedContext);

            // 取得发生例外时的错误讯息
            var errorMessage = actionExecutedContext.Exception.Message;

            var response = actionExecutedContext.Response;
            int statusCode;

            if (response == null)
            {
                statusCode = 404;
            }
            else
            {
                statusCode = (int)actionExecutedContext.Response.StatusCode;
            }
            var result = new ApiResult()
            {
                Status  = statusCode,
                Message = errorMessage
            };

            // 重新打包回传的讯息
            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse((HttpStatusCode)statusCode, result);
        }
        /// <summary>
        /// Raises the exception event.
        /// </summary>
        /// <param name="context">The context for the action.</param>
        public override void OnException(HttpActionExecutedContext context)
        {
            var wrapResultAttribute = HttpActionDescriptorHelper
                .GetWrapResultAttributeOrNull(context.ActionContext.ActionDescriptor) ??
                _configuration.DefaultWrapResultAttribute;

            if (wrapResultAttribute.LogError)
            {
                LogHelper.LogException(Logger, context.Exception);
            }

            if (!wrapResultAttribute.WrapOnError)
            {
                return;
            }

            if (IsIgnoredUrl(context.Request.RequestUri))
            {
                return;
            }

            context.Response = context.Request.CreateResponse(
                GetStatusCode(context),
                new AjaxResponse(
                    SingletonDependency<ErrorInfoBuilder>.Instance.BuildForException(context.Exception),
                    context.Exception is Abp.Authorization.AbpAuthorizationException)
            );

            EventBus.Trigger(this, new AbpHandledExceptionData(context.Exception));
        }
        public override void OnException(HttpActionExecutedContext ctx)
        {
            if (!IgnoreExceptions.Contains(ctx.Exception.GetType()))
            {
                var statusCode = GetStatus(ctx.Exception.GetType());

                var error = new HttpError(ctx.Exception, IncludeErrorDetails(ctx));

                var req = ctx.Request;

                var exLog = ctx.Exception.LogException(e =>
                {
                    e.ActionName = ctx.ActionContext.ActionDescriptor.ActionName;
                    e.ControllerName = ctx.ActionContext.ActionDescriptor.ControllerDescriptor.ControllerName;
                    e.UserAgent = req.Headers.UserAgent.ToString();
                    e.RequestUrl = req.RequestUri.ToString();
                    e.UrlReferer = req.Headers.Referrer?.ToString();
                    e.UserHostAddress = GetClientIp(req);
                    e.UserHostName = GetClientName(req);
                    e.QueryString = ExceptionEntity.Dump(req.RequestUri.ParseQueryString());
                    e.Form = (string)(req.Properties.ContainsKey(SignumAuthenticationAndProfilerAttribute.SavedRequestKey) ? req.Properties[SignumAuthenticationAndProfilerAttribute.SavedRequestKey] : null);
                    e.Session = GetSession(req);
                });

                error["ExceptionID"] = exLog.Id.ToString();

                ctx.Response = ctx.Request.CreateResponse<HttpError>(statusCode, error);
            }

            base.OnException(ctx);
        }
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext != null && actionExecutedContext.Request.Method != HttpMethod.Get && actionExecutedContext.Exception == null)
            {
                var dataContext = actionExecutedContext.Request.GetDependencyScope().GetService(typeof(IDataContext)) as IDataContext;
#if DEBUG
                try
                {
                    dataContext.SaveChanges();
                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Debug.WriteLine(
                            "Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                            eve.Entry.Entity.GetType().Name, eve.Entry.State);

                        foreach (var ve in eve.ValidationErrors)
                        {
                            Debug.WriteLine(
                                "- Property: \"{0}\", Error: \"{1}\"",
                                ve.PropertyName, ve.ErrorMessage);
                        }
                    }

                    throw;
                }
#else
                dataContext.SaveChanges();
#endif
            }

            base.OnActionExecuted(actionExecutedContext);
        }
Ejemplo n.º 13
0
 public override void OnException(HttpActionExecutedContext actionExecutedContext)
 {
     if (actionExecutedContext.Exception is DraftAuthenticationException)
     {
         actionExecutedContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
         {
             Content = new StringContent("Unauthorized"),
             ReasonPhrase = "Unauthorized"
         };
     }
     else if (actionExecutedContext.Exception is HttpStatusException)
     {
         HttpStatusException exc = (HttpStatusException)actionExecutedContext.Exception;
         actionExecutedContext.Response = new HttpResponseMessage(exc.Status)
         {
             Content = new StringContent(exc.Message),
             ReasonPhrase = exc.Message
         };
     }
     else if (actionExecutedContext.Exception != null)
     {
         Exception exc = actionExecutedContext.Exception;
         actionExecutedContext.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
         {
             Content = new StringContent(exc.Message),
             ReasonPhrase = exc.Source + " : " + exc.GetType().ToString() + " : " + exc.Message
         };
     }
 }
Ejemplo n.º 14
0
 public static HttpActionExecutedContext GetActionExecutedContext(HttpRequestMessage request, HttpResponseMessage response)
 {
     HttpActionContext actionContext = CreateActionContext();
     actionContext.ControllerContext.Request = request;
     HttpActionExecutedContext actionExecutedContext = new HttpActionExecutedContext(actionContext, null) { Response = response };
     return actionExecutedContext;
 }
Ejemplo n.º 15
0
 public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
 {
     try
     {
         //Apply logging
         var objChanges = HttpContext.Current.Items[ContactInfo.CONTACT_CHANGE] as List<ActivityObjectChangeInfo>;
         if (objChanges != null)
         {
             var activityInfo = new ActivityLogInfo
                                    {
                                        FunctionId = 0,
                                        CreatedBy = UserContext.GetCurrentUser().UserID
                                    };
             activityInfo.Id = ActivityLogRepository.Create(activityInfo);
             foreach (var objChange in objChanges)
             {
                 objChange.ActivityId = activityInfo.Id;
                 ActivityObjectChangeRepository.Create(objChange);
             }
         }
         HttpContext.Current.Items[ContactInfo.CONTACT_CHANGE] = null;
     }
     catch
     {
         //Dont throw exception if loging failed
     }
     base.OnActionExecuted(actionExecutedContext);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// 引发异常事件
 /// </summary>
 /// <param name="actionExecutedContext">操作的上下文</param>
 public override void OnException(HttpActionExecutedContext actionExecutedContext)
 {
     base.OnException(actionExecutedContext);
     var message = actionExecutedContext.Exception.Message;
     var statusCode = HttpStatusCode.OK;
     if ("404".Equals(message))
     {
         message = string.Format("未找到与请求 URI“{0}”匹配的 HTTP 资源。", actionExecutedContext.Request.RequestUri);
         statusCode = HttpStatusCode.NotFound;
     }
     else
     {
         string errorInfo = string.Format("请求URI: {0} 发生异常, 异常信息: {1}.", actionExecutedContext.Request.RequestUri, actionExecutedContext.Exception);
         Logger.Client.Error(System.Reflection.MethodBase.GetCurrentMethod(), LogDomain.Ui, null, string.Empty, errorInfo);
     }
     var newContent = new ApiResult<string>
     {
         Success = false,
         Error = message,
         DebugError = message
     };
     var contentType = actionExecutedContext.Request.Headers.Accept.ToString();
     ObjectContent content = contentType.ToLower().Contains("application/json") ? new ObjectContent<ApiResult<string>>(newContent, new JsonMediaTypeFormatter()) : new ObjectContent<ApiResult<string>>(newContent, new XmlMediaTypeFormatter());
     actionExecutedContext.Response = new HttpResponseMessage { Content = content, StatusCode = statusCode };
 }
Ejemplo n.º 17
0
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            var buffer = TraceBuffer.Current;

            if (buffer == null)
            {
                return;
            }

            TraceBuffer.Clear();

            if (buffer.HasContent)
            {
                string originalContent;
                HttpStatusCode statusCode;

                if (actionExecutedContext.Exception == null)
                {
                    originalContent = actionExecutedContext.Response.Content.ReadAsStringAsync().Result;
                    statusCode = actionExecutedContext.Response.StatusCode;
                }
                else
                {
                    originalContent = actionExecutedContext.Exception.ToLogString();
                    statusCode = HttpStatusCode.InternalServerError;
                }

                actionExecutedContext.Response = new HttpResponseMessage(statusCode)
                {
                    Content = new StringContent(string.Format("{0}\n\n{1}", buffer, originalContent).Trim())
                };
            }
        }
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            stopwatch.Stop();
            _log.InfoFormat("Executed action: {0} in {1}ms", actionExecutedContext.ActionContext.ActionDescriptor.ActionName, stopwatch.ElapsedMilliseconds);

            base.OnActionExecuted(actionExecutedContext);
        }
Ejemplo n.º 19
0
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Exception == null)
            {
                return;
            }
            HttpRequestMessage request = actionExecutedContext.Request;
            Exception exception = actionExecutedContext.Exception;
            string ip = actionExecutedContext.ActionContext.Request.GetClientIpAddress();
            #if NET45
            string user = actionExecutedContext.ActionContext.RequestContext.Principal.Identity.Name;
            #else
            string user = Thread.CurrentPrincipal.Identity.Name;
            #endif
            string msg = "User:{0},IP:{1},Message:{2}".FormatWith(user, ip, exception.Message);
            Logger.Error(msg, exception);

            if (actionExecutedContext.Exception is HttpException)
            {
                HttpException httpException = (HttpException)exception;
                actionExecutedContext.Response =
                    request.CreateResponse((HttpStatusCode)httpException.GetHttpCode(), new Error { Message = exception.Message });
            }
            else if (Mappings.ContainsKey(exception.GetType()))
            {
                HttpStatusCode httpStatusCode = Mappings[exception.GetType()];
                actionExecutedContext.Response =
                    request.CreateResponse(httpStatusCode, new Error { Message = exception.Message });
            }
            else
            {
                actionExecutedContext.Response =
                    actionExecutedContext.Request.CreateResponse(HttpStatusCode.InternalServerError, new Error { Message = exception.Message });
            }
        }
Ejemplo n.º 20
0
 public override void OnException(HttpActionExecutedContext context)
 {
     Type exceptionType = context.Exception.GetType();
     if (exceptionType == typeof(NotAuthorizedException))
     {
         context.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
     }
     else if (exceptionType == typeof(PackageNotFoundException))
     {
         context.Response = new HttpResponseMessage(HttpStatusCode.NotFound)
         {
             Content = new StringContent("Package version not found", Encoding.UTF8, new MediaTypeHeaderValue("text/plain").ToString()),
         };
         context.Response.Headers.Add("Status", "404 Package version not found");
     }
     else if (exceptionType == typeof(InternalServerErrorException))
     {
         context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
     }
     else if (exceptionType == typeof(BadRequestException))
     {
         context.Response = new HttpResponseMessage(HttpStatusCode.BadRequest);
     }
     else
     {
         context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
     }
 }
Ejemplo n.º 21
0
        private void End(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Exception != null)
                WindsorAccessor.Instance.Container.Resolve<IUnitOfWork>().Abort();

            WindsorAccessor.Instance.Container.Resolve<IUnitOfWork>().End();
        }
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext.Response != null)
                actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", ConfigurationManager.AppSettings["ClientUrl"]);

            base.OnActionExecuted(actionExecutedContext);
        }
 public override void OnException(HttpActionExecutedContext context)
 {
     if (context.Exception is ApplicationException)
     {
        context.Response= context.Request.CreateErrorResponse(HttpStatusCode.BadRequest, context.Exception.Message);
     }
 }
 public override void OnException(HttpActionExecutedContext context)
 {
     if (context.Exception is ArgumentNullException)
     {
         context.Response = context.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "ArgumentNullException occurred");
     }
 }
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            base.OnActionExecuted(actionExecutedContext);
            if (actionExecutedContext != null &&
                actionExecutedContext.Response != null &&
                actionExecutedContext.Response.IsSuccessStatusCode &&
                (actionExecutedContext.Response.Content == null ||
                 "text/html".Equals(actionExecutedContext.Response.Content.Headers.ContentType.MediaType, StringComparison.OrdinalIgnoreCase))
            )
            {
                if (EnableCto)
                {
                    actionExecutedContext.Response.Headers.Add("X-Content-Type-Options", "nosniff");
                }

                if (EnableXfo)
                {
                    actionExecutedContext.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
                }

                if (EnableCsp)
                {
                    actionExecutedContext.Response.Headers.Add("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'; img-src *");
                }
            }
        }
Ejemplo n.º 26
0
        public override void OnException(HttpActionExecutedContext context)
        {
            HttpStatusCode status = HttpStatusCode.InternalServerError;

            var exType = context.Exception.GetType();

            if (exType == typeof(UnauthorizedAccessException))
                status = HttpStatusCode.Unauthorized;
            else if (exType == typeof(ArgumentException))
                status = HttpStatusCode.NotFound;
            else if (exType == typeof(ServiceUnavailableExceptions))
                status = HttpStatusCode.ServiceUnavailable;
            else if (exType == typeof(InvalidOperationException)) // Happens when someone tries to Update on POST instead of PUT.
                status = HttpStatusCode.MethodNotAllowed;
            else if (exType == typeof(ItemNotFoundException))
                status = HttpStatusCode.NotFound;

            var apiError = new ApiMessageError() { message = context.Exception.Message };

            // create a new response and attach our ApiError object
            // which now gets returned on ANY exception result
            var errorResponse = context.Request.CreateResponse<ApiMessageError>(status, apiError);
            context.Response = errorResponse;
            errorResponse.ReasonPhrase = context.Exception.Message;

            base.OnException(context);
        }
        private static void HandleJsonException(HttpActionExecutedContext ec)
        {
            ErrorDto data = new ErrorDto();

            // Different data depending on exception type
            var exceptionType = ec.Exception.GetType();
            if (exceptionType == typeof(BrokenRuleException))
            {
                data.BrokenRules = GetDistinctBrokenRules(((BrokenRuleException) ec.Exception).BrokenRules);
            }
            else if (exceptionType == typeof(UserFriendlyException))
            {
                data.Message = ec.Exception.Message.Replace("\r\n", "<br/>");
            }
            else
            {
                data.Message = string.Format("An unexpected error has occurred. Please try agian.");
            }

            ec.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
            {
                Content =
                    new ObjectContent<ErrorDto>(
                        data,
                        new JsonMediaTypeFormatter() {UseDataContractJsonSerializer = false})
            };
        }
 public override void OnException(HttpActionExecutedContext actionExecutedContext)
 {
     if (actionExecutedContext.Exception is BadRequestException)
     {
         actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, new HttpError(actionExecutedContext.Exception.Message));
     }
 }
Ejemplo n.º 29
0
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            long? originalsize = null;
            var inlinecount = HttpUtility.ParseQueryString(actionExecutedContext.Request.RequestUri.Query).Get("$inlinecount");

            object responseObject;
            actionExecutedContext.Response.TryGetContentValue(out responseObject);
            var originalquery = responseObject as IQueryable<object>;

            if (originalquery != null && inlinecount == "allpages")
                originalsize = originalquery.Count();

            base.OnActionExecuted(actionExecutedContext);

            if (ResponseIsValid(actionExecutedContext.Response))
            {
                actionExecutedContext.Response.TryGetContentValue(out responseObject);

                if (responseObject is IQueryable)
                {
                    var robj = responseObject as IQueryable<object>;

                    if (originalsize != null)
                    {
                        actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.OK, new [] {new ODataMetadata<object>(robj, originalsize)});
                    }
                }
            }
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Called when the action is executed.  If the return type is IEnumerable or IQueryable, 
        /// calls OnActionExecuted in the base class, which in turn calls ApplyQuery.
        /// </summary>
        /// <param name="actionExecutedContext">The action executed context.</param>
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            var response = actionExecutedContext.Response;
              if (response == null || !response.IsSuccessStatusCode) {
            return;
              }

              object responseObject;
              if (!response.TryGetContentValue(out responseObject)) {
            return;
              }

              var request = actionExecutedContext.Request;
              var returnType = actionExecutedContext.ActionContext.ActionDescriptor.ReturnType;
              var queryHelper = GetQueryHelper(request);
              if (typeof(IEnumerable).IsAssignableFrom(returnType) || responseObject is IEnumerable) {
            // QueryableAttribute only applies for IQueryable and IEnumerable return types
            base.OnActionExecuted(actionExecutedContext);
            if (!actionExecutedContext.Response.IsSuccessStatusCode) {
              return;
            }
            if (!response.TryGetContentValue(out responseObject)) {
              return;
            }
            var queryResult = queryHelper.ApplySelectAndExpand(responseObject as IQueryable, request.RequestUri.ParseQueryString());
            queryHelper.WrapResult(request, response, queryResult);
              } else {
            // For non-IEnumerable results, post-processing must be done manually by the developer.
              }

              queryHelper.ConfigureFormatter(actionExecutedContext.Request, responseObject as IQueryable);
        }
Ejemplo n.º 31
0
 Uri GetContactLink(int contactId, HttpActionExecutedContext context)
 {
     var routeData = context.Request.GetRouteData();
     var controller = routeData.Values["controller"];
     var urlHelper = context.Request.GetUrlHelper();
     return new Uri(urlHelper.Route("DefaultApi", new { controller = controller, id = contactId }), UriKind.Relative);
 }
Ejemplo n.º 32
0
 /// <summary>
 /// Raises the exception event asynchronously.
 /// </summary>
 /// <param name="actionExecutedContext">The context for the action.</param>
 /// <returns>A task representing the asynchronous exception logging operation.</returns>
 public override async Task OnExceptionAsync(ExceptionContext actionExecutedContext)
 {
     if (actionExecutedContext != null && actionExecutedContext.Exception != null)
     {
         var userName = actionExecutedContext.HttpContext.User.Identity.Name;
         await ExceptionHelper.PublishExceptionAsync(userName, actionExecutedContext.Exception, CancellationToken.None);
     }
 }
Ejemplo n.º 33
0
 public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
 {
     base.OnException(actionExecutedContext);
     var routeData = actionExecutedContext.ActionContext.ControllerContext.RouteData;
     var logText   = string.Format(" controller: {0}, action: {1}\n{2}\n{3}\n", routeData.Values["controller"], routeData.Values["action"], actionExecutedContext.Exception.Message, actionExecutedContext.Exception.ToString());
     //LogHelper.LogError(logText);
     // var result = new AjaxReturnInfo("系统繁忙,请稍候重试");
     // actionExecutedContext.Response = new HttpResponseMessage { Content = new ByteArrayContent(Encoding.UTF8.GetBytes(result.ToJavaScriptJson())), StatusCode = HttpStatusCode.InternalServerError };
 }
Ejemplo n.º 34
0
 public override async Task OnActionExecutedAsync(ActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
 {
     if (Configuration.AuditDisabled)
     {
         return;
     }
     await _adapter.AfterExecutedAsync(actionExecutedContext, ContextWrapper(actionExecutedContext.Request),
                                       IncludeModelState(actionExecutedContext), IncludeResponseBody(actionExecutedContext));
 }
 public override void OnException(
     System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
 {
     if (actionExecutedContext.Exception != null)
     {
         Elmah.ErrorSignal.FromCurrentContext().Raise(actionExecutedContext.Exception);
     }
     base.OnException(actionExecutedContext);
 }
Ejemplo n.º 36
0
        public override void OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
        {
            stopwatch.Stop();
            var milliseconds = stopwatch.ElapsedMilliseconds;

            System.IO.File.AppendAllText(System.Web.HttpContext.Current.Server.MapPath("~/Logger.txt"),
                                         string.Format("{0} : Elapsed={1} Url={2}",
                                                       System.DateTime.Now, stopwatch.Elapsed, actionExecutedContext.Request.RequestUri));
            base.OnActionExecuted(actionExecutedContext);
        }
Ejemplo n.º 37
0
 public override async Task OnActionExecutedAsync(ActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
 {
     if (Configuration.AuditDisabled ||
         (_logDisabledBuilder != null && _logDisabledBuilder.Invoke(actionExecutedContext.ActionContext)) ||
         _adapter.IsActionIgnored(actionExecutedContext.ActionContext))
     {
         return;
     }
     await _adapter.AfterExecutedAsync(actionExecutedContext, ContextWrapper(actionExecutedContext.Request),
                                       IncludeModelState(actionExecutedContext), IncludeResponseBody(actionExecutedContext), IncludeResponseHeaders(actionExecutedContext));
 }
Ejemplo n.º 38
0
        /// <summary>
        /// 引發例外狀況事件。
        /// </summary>
        /// <param name="actionExecutedContext">動作的內容。</param>
        public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
        {
            base.OnException(actionExecutedContext);

            // 將錯誤訊息轉成要回傳的ApiResponseResult
            var errorApiResponseResult = ExceptionUtils.ConvertToApiResponse(actionExecutedContext.Exception);

            // 重新打包回傳的訊息
            actionExecutedContext.Response =
                actionExecutedContext.Request.CreateResponse(errorApiResponseResult.StatusCode, errorApiResponseResult);
        }
Ejemplo n.º 39
0
 public override void OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
 {
     if (!(WebApiCache.Contains(_cachekey)))
     {
         var body = actionExecutedContext.Response.Content.ReadAsStringAsync().Result;
         WebApiCache.Add(_cachekey, body, DateTime.Now.AddSeconds(_timespan));
         WebApiCache.Add(_cachekey + ":responsect", actionExecutedContext.Response.Content.Headers.ContentType, DateTime.Now.AddSeconds(_timespan));
     }
     if (IsCacheable(actionExecutedContext.ActionContext))
     {
         actionExecutedContext.ActionContext.Response.Headers.CacheControl = setClientCache();
     }
 }
        /// <summary>
        /// every exception will entry this method
        /// and will output log file at App_Data\logs
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
        {
            base.OnException(actionExecutedContext);
            logger.Log(LogLevel.Error, actionExecutedContext.Exception);
            var errorMessage = actionExecutedContext.Exception.Message;
            var result       = new ApiResultEntity()
            {
                StatusCode   = HttpStatusCode.OK,
                Status       = "ERROR",
                ErrorMessage = errorMessage
            };

            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(result.StatusCode, result);
        }
Ejemplo n.º 41
0
        /// <summary>
        /// Raises the exception event.
        /// </summary>
        /// <param name="actionExecutedContext">The context for the action.</param>
        public override void OnException(ExceptionContext actionExecutedContext)
        {
            if (actionExecutedContext != null && actionExecutedContext.Exception != null)
            {
#if !NETCORE
                var    routeData  = actionExecutedContext.ActionContext.RequestContext.RouteData;
                string controller = routeData.Values["controller"].ToString();
                string action     = routeData.Values["action"].ToString();
                var    userName   = actionExecutedContext.ActionContext.RequestContext.Principal.Identity.Name;
#else
                var userName = actionExecutedContext.HttpContext.User.Identity.Name;
#endif
                ExceptionHelper.PublishException(userName, actionExecutedContext.Exception);
            }
        }
        public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
        {
            base.OnException(actionExecutedContext);

            // 取得发生例外时的错误讯息
            var errorMessage = actionExecutedContext.Exception.Message;

            var result = new ApiResultModel()
            {
                code    = HttpStatusCode.BadRequest,
                message = errorMessage
            };

            // 重新打包回传的讯息
            actionExecutedContext.Response = actionExecutedContext.Request
                                             .CreateResponse(result.code, result);
        }
Ejemplo n.º 43
0
    public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
    {
        Exception exp = actionExecutedContext.Exception;

        // 取得由 API 返回的状态代码
        //HttpStatusCode StatusCode = actionExecutedContext.ActionContext.Response.StatusCode;
        HttpStatusCode StatusCode = HttpStatusCode.InternalServerError;

        if (exp is NotImplementedException)
        {
            StatusCode = HttpStatusCode.NotImplemented;
        }
        else if (exp is TimeoutException)
        {
            StatusCode = HttpStatusCode.RequestTimeout;
        }
        else if (exp is UnauthorizedAccessException)
        {
            StatusCode = HttpStatusCode.Unauthorized;
        }
        else if (exp is NotSupportedException)
        {
            StatusCode = HttpStatusCode.NotImplemented;
        }


        // 重新打包回传的讯息
        actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(StatusCode, new AjaxResult
        {
            success = false,
            message = exp.Message,
            data    = exp

                      /*,data = new {
                       *  ExceptionData = exp.Data,
                       *  ExceptionSource = exp.Source,
                       *  ExceptionTargetSite = exp.TargetSite,
                       *  ExceptionStackTrace = exp.StackTrace
                       * }*/
        });


        base.OnException(actionExecutedContext);
    }
Ejemplo n.º 44
0
    public override void OnException(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
    {
        Exception exp = actionExecutedContext.Exception;

        // 取得由 API 返回的状态代码
        //HttpStatusCode StatusCode = actionExecutedContext.ActionContext.Response.StatusCode;
        HttpStatusCode StatusCode = HttpStatusCode.InternalServerError;

        if (exp is NotImplementedException)
        {
            StatusCode = HttpStatusCode.NotImplemented;
        }
        else if (exp is TimeoutException)
        {
            StatusCode = HttpStatusCode.RequestTimeout;
        }
        else if (exp is UnauthorizedAccessException)
        {
            StatusCode = HttpStatusCode.Unauthorized;
        }
        else if (exp is NotSupportedException)
        {
            StatusCode = HttpStatusCode.NotImplemented;
        }


        // 重新打包回传的讯息
        actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(StatusCode, new AjaxResult
        {
            statusCode = 500,
            message    = exp.Message,
            data       = exp
        });
        //Logger.Error(exp.Message);

        base.OnException(actionExecutedContext);
    }
Ejemplo n.º 45
0
 private async Task ExecuteExceptionFilterAsyncCore(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
 {
     await OnExceptionAsync(actionExecutedContext, cancellationToken);
 }
 public virtual void OnException(HttpActionExecutedContext actionExecutedContext)
 {
 }
 public virtual void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
 {
 }
Ejemplo n.º 48
0
 protected bool IncludeResponseHeaders(ActionExecutedContext actionContext)
 {
     return(_includeResponseHeadersBuilder != null?_includeResponseHeadersBuilder.Invoke(actionContext) : false);
 }
Ejemplo n.º 49
0
 protected bool IncludeModelState(ActionExecutedContext context)
 {
     return(_includeModelStateBuilder != null?_includeModelStateBuilder.Invoke(context) : false);
 }
Ejemplo n.º 50
0
 protected bool IncludeResponseBody(ActionExecutedContext context)
 {
     return(_includeResponseBodyBuilder != null?_includeResponseBodyBuilder.Invoke(context) : false);
 }
Ejemplo n.º 51
0
        //public override System.Threading.Tasks.Task OnActionExecutingAsync(System.Web.Http.Controllers.HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
        //{

        //    Start(actionContext);

        //    return base.OnActionExecutingAsync(actionContext, cancellationToken);
        //}


        //public override System.Threading.Tasks.Task OnActionExecutedAsync(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext, System.Threading.CancellationToken cancellationToken)
        //{
        //    End(actionExecutedContext);

        //    return base.OnActionExecutedAsync(actionExecutedContext, cancellationToken);
        //}


        public override void OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
        {
            End(actionExecutedContext);

            base.OnActionExecuted(actionExecutedContext);
        }