public override void OnException(ExceptionContext filterContext) { //base.OnException(filterContext); var _path = filterContext.HttpContext.Request.Url.LocalPath; // string msg = _path + "请求出现错误:" + HttpUtility.UrlEncode(filterContext.Exception.Message); // Logic.BaseLogic.DisEntity(); //LogHelper.ErrorLog(msg); //添加错误队列 HWebQueue.InLogQueue_Error(filterContext.Exception, WebHelper.GetIP(filterContext.HttpContext.Request)); //ajax请求不用跳转 if (_path.IndexOf("Ajax") >= 0 || _path.IndexOf("Error") > 0) { filterContext.RequestContext.HttpContext.Response.Write("{State:2,Message:'服务器内部错误'}"); filterContext.RequestContext.HttpContext.Response.End(); return; } if (!filterContext.ExceptionHandled) { filterContext.ExceptionHandled = true; filterContext.HttpContext.Response.Redirect("/Error/Index?error=" + filterContext.Exception.Message); } }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //加载系统配置 WebHelper.LoadConfig(); //启动日志队列 HWebQueue.StartLogQueue(); //启动指令队列 HWebQueue.StartCmdQueue(600); }
/// <summary> /// 获取客户端请求ip /// </summary> /// <returns></returns> public string GetIP() { if (Session[ConstVal.SessionIpStr] != null) { return(Session[ConstVal.SessionIpStr].ToString()); } string userIP = ""; try { string ip = string.Empty; if (!string.IsNullOrEmpty(Request.ServerVariables["HTTP_VIA"])) { ip = Convert.ToString(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]); } if (string.IsNullOrEmpty(ip)) { ip = Request.UserHostAddress; } // 利用 Dns.GetHostEntry 方法,由获取的 IPv6 位址反查 DNS 纪录,<br> // 再逐一判断何者为 IPv4 协议,即可转为 IPv4 位址。 foreach (IPAddress ipAddr in Dns.GetHostEntry(ip).AddressList) { if (ipAddr.AddressFamily.ToString() == "InterNetwork") { userIP = ipAddr.ToString(); } } } catch (Exception ex) { if (userIP == "") { userIP = "1.1.1.1"; } HWebQueue.InLogQueue_Error(ex); } return(userIP); }