예제 #1
0
        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;
        }
예제 #2
0
        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
        }