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); } }
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); } }
/// <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()); } }
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); }
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 }; } }
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; }
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); }
/// <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 }; }
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); }
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 }); } }
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); } }
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 *"); } } }
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)); } }
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)}); } } } }
/// <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); }
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); }
/// <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); } }
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 }; }
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); }
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); }
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)); }
/// <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); }
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); }
/// <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); }
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); }
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); }
private async Task ExecuteExceptionFilterAsyncCore(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken) { await OnExceptionAsync(actionExecutedContext, cancellationToken); }
public virtual void OnException(HttpActionExecutedContext actionExecutedContext) { }
public virtual void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { }
protected bool IncludeResponseHeaders(ActionExecutedContext actionContext) { return(_includeResponseHeadersBuilder != null?_includeResponseHeadersBuilder.Invoke(actionContext) : false); }
protected bool IncludeModelState(ActionExecutedContext context) { return(_includeModelStateBuilder != null?_includeModelStateBuilder.Invoke(context) : false); }
protected bool IncludeResponseBody(ActionExecutedContext context) { return(_includeResponseBodyBuilder != null?_includeResponseBodyBuilder.Invoke(context) : false); }
//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); }