public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { if (actionExecutedContext.Request.RequestUri.PathAndQuery.Contains("api/mobile/TradeNotify")) { base.OnActionExecuted(actionExecutedContext); return; } if (actionExecutedContext.Response == null) { return; } var content = actionExecutedContext.Response.Content; var x = content == null ? null : content.ReadAsAsync <object>().Result; var result = new ApiRetrunResult <object>() { Code = "200", Result = x }; var code = (System.Net.HttpStatusCode)Enum.Parse(typeof(System.Net.HttpStatusCode), result.Code, true); var response = actionExecutedContext.Request.CreateResponse <ApiRetrunResult <object> >(code, result, "application/json"); response.Headers.Add("Access-Control-Allow-Origin", "*"); //response.Content = new StringContent(string.Concat(result), Encoding.UTF8, "application/xml"); ////var response = actionExecutedContext.Request.CreateResponse<string>(code, result.ToJson(), "application/json"); //if (string.Equals(actionExecutedContext.ActionContext.ControllerContext.RouteData.Values["controller"].ToString(),"Login",StringComparison.CurrentCultureIgnoreCase)) //{ // //var cookie = new CookieHeaderValue("session","hello!"); // //cookie.Expires = DateTimeOffset.Now.AddDays(1); // //cookie.Domain = actionExecutedContext.Request.RequestUri.Host; // //cookie.Path = "/"; // //response.Headers.AddCookies(new CookieHeaderValue[] { cookie } ); //} actionExecutedContext.Response = response; }
public override void OnException(HttpActionExecutedContext actionExecutedContext) { if (actionExecutedContext.Exception == null) { return; } var result = new ApiRetrunResult <object>(); #if (Local != true) if (actionExecutedContext.Exception is LoginExecption) { var ex = actionExecutedContext.Exception as LoginExecption;//登陆 result.Code = ex.ErrorCode ?? "401"; result.Message = ex.Message; var code = (System.Net.HttpStatusCode)Enum.Parse(typeof(System.Net.HttpStatusCode), result.Code, true); var response = actionExecutedContext.Request.CreateResponse <ApiRetrunResult <object> >(System.Net.HttpStatusCode.OK, result, "application/json"); actionExecutedContext.Response = response; } else if (actionExecutedContext.Exception is MessageException)//验证 { var ex = actionExecutedContext.Exception as MessageException; result.Code = ex.ErrorCode ?? "501"; result.Message = ex.Message; var code = (System.Net.HttpStatusCode)Enum.Parse(typeof(System.Net.HttpStatusCode), result.Code, true); var response = actionExecutedContext.Request.CreateResponse <ApiRetrunResult <object> >(System.Net.HttpStatusCode.OK, result, "application/json"); actionExecutedContext.Response = response; } else #endif if (actionExecutedContext.Exception is Pharos.Logic.ApiData.Pos.Exceptions.PosException) //Pos APP验证 为将来提POS通用业务逻辑方便,不与Mobile耦合 { var ex = actionExecutedContext.Exception as Pharos.Logic.ApiData.Pos.Exceptions.PosException; result.Code = ex.ErrorCode ?? "501"; result.Message = ex.Message; result.ErrorInfo = ex.Info; var code = (System.Net.HttpStatusCode)Enum.Parse(typeof(System.Net.HttpStatusCode), result.Code, true); var response = actionExecutedContext.Request.CreateResponse <ApiRetrunResult <object> >(System.Net.HttpStatusCode.OK, result, "application/json"); actionExecutedContext.Response = response; } else //操作异常 { var ex = actionExecutedContext.Exception; ex.Source += ",地址:" + actionExecutedContext.Request.RequestUri.AbsolutePath; #if (Local != true) new Sys.LogEngine().WriteError(ex, Sys.LogModule.APP手机端); #endif #if Local Common.Logging.ILog logger = Common.Logging.LogManager.GetLogger(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name); logger.Error(ex.Message, ex); #endif result.Code = "500"; result.Message = string.Format("服务器配置出错或发生异常:{0}!", ex.Message); var code = (System.Net.HttpStatusCode)Enum.Parse(typeof(System.Net.HttpStatusCode), result.Code, true); result.Result = ex; var response = actionExecutedContext.Request.CreateResponse <ApiRetrunResult <object> >(System.Net.HttpStatusCode.OK, result, "application/json"); actionExecutedContext.Response = response; } actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*"); #if (Local != true) Pharos.Component.qrcode.Log.Debug(actionExecutedContext.Request.RequestUri.AbsolutePath, actionExecutedContext.Exception.Message); #endif }