Beispiel #1
0
        public override void ProcessRequest(HttpContext context)
        {
            try
            {
                context.Response.ContentType = ResponseContentType;

                //获取上传文件集合
                HttpFileCollection files = GetHttpPostedFile(context);
                if (files == null)
                {
                    throw new FileNotFoundException("UpdateFile Not Found! HttpPostedFile Is NULL!");
                }

                //获取临时目录
                string uploadPath   = "/" + MvcApplication.UploadFolder + "/Temp/" + DateTime.Now.ToString("yyyyMMdd") + "/";;
                string uploadPathMP = context.Server.MapPath(uploadPath);
                if (!Directory.Exists(uploadPathMP))
                {
                    //不存在则自动创建文件夹
                    Directory.CreateDirectory(uploadPathMP);
                }
                string fileNames = string.Empty;

                string ext;
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile postedFile = files[i];

                    ext = Path.GetExtension(postedFile.FileName).ToLower();
                    if (!AllowFileExt.Contains(ext))
                    {
                        LogHelp.AddInvadeLog("Handlers-UploadMultipleFileHandler", context.Request);
                        return;
                    }

                    //文件重命名
                    string reName = DateTime.Now.ToString("yyyyMMddHHmmssfffffff") + ext;
                    postedFile.SaveAs(uploadPathMP + reName);
                    string thumName = "T300X400_" + reName;
                    //临时保存文件
                    ImageTools.MakeThumbnail(uploadPathMP + reName, uploadPathMP + thumName, 300, 400, MakeThumbnailMode.HW);
                    fileNames += "|" + thumName;
                }
                //json方式输出成功信息 和 保存路径 , 文件名
                JsonObject json = new JsonObject();
                json.Put("success", true);                   //成功
                json.Put("path", uploadPath + "{0}");        //临时保存路径
                json.Put("names", fileNames.TrimStart('|')); //文件名 | 分割
                context.Response.Write(json.ToString());     //输出json数据
            }
            catch (Exception ex)
            {
                Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
                model.Loginfo    = ex.Message;
                model.StackTrace = ex.ToString();
                model.Url        = context.Request.Url.AbsoluteUri;
                BLL.SysManage.ErrorLog.Add(model);
                throw;
            }
        }
Beispiel #2
0
        public override void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = ResponseContentType;

            HttpPostedFile file = GetHttpPostedFile(context);

            if (file == null)
            {
                throw new FileNotFoundException("UpdateFile Not Found! HttpPostedFile Is NULL!");
            }
            if (file.FileName.Length < 1)
            {
                return;
            }

            if (!AllowFileExt.Contains(Path.GetExtension(file.FileName).ToLower()))
            {
                LogHelp.AddInvadeLog("Handlers-UploadHandlerBase", context.Request);
                return;
            }

            //文件重命名
            string fileName = GenerateFileName(file);

            try
            {
                if (IsLocalSave)
                {
                    string uploadPath = GetUploadPath(context);
                    if (!Directory.Exists(uploadPath))
                    {
                        //不存在则自动创建文件夹
                        Directory.CreateDirectory(uploadPath);
                    }
                    //保存文件
                    SaveAs(uploadPath, fileName, file);
                }
                else
                {
                    int    filelength = file.ContentLength;
                    byte[] buffer     = new byte[filelength];
                    file.InputStream.Read(buffer, 0, filelength);
#pragma warning disable CS0219 // 变量“ImageUrl”已被赋值,但从未使用过它的值
                    string ImageUrl = "";
#pragma warning restore CS0219 // 变量“ImageUrl”已被赋值,但从未使用过它的值
                }
                //调用子类实现
                ProcessSub(context, UploadTempFolder, fileName);
            }
            catch (Exception ex)
            {
                Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
                model.Loginfo    = ex.Message;
                model.StackTrace = ex.ToString();
                model.Url        = context.Request.Url.AbsoluteUri;
                ColoPay.BLL.SysManage.ErrorLog.Add(model);
                throw;
            }
        }
Beispiel #3
0
        protected override void PageError(object sender, EventArgs e)
        {
            string errMsg = "";

            Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
            Exception currentError         = Server.GetLastError();

            if (currentError is System.Data.SqlClient.SqlException)
            {
                System.Data.SqlClient.SqlException sqlerr = (System.Data.SqlClient.SqlException)currentError;
                if (sqlerr != null)
                {
                    string sqlMsg = GetSqlExceptionMessage(sqlerr.Number);
                    if (sqlerr.Number == 547)
                    {
                        errMsg += "<h1 class=\"SystemTip\">" + Resources.Site.ErrorSystemTip + "</h1><br/> " +
                                  "<font class=\"ErrorPageText\">" + sqlMsg + "</font>";
                    }
                    else
                    {
                        errMsg += "<h1 class=\"ErrorMessage\">" + Resources.Site.ErrorSystemTip + "</h1><hr/> " +
                                  "该信息已被系统记录,请稍后重试或与管理员联系。<br/>" +
                                  "错误信息: <font class=\"ErrorPageText\">" + sqlMsg + "</font>";
                        model.Loginfo    = sqlMsg;
                        model.StackTrace = currentError.ToString();
                        model.Url        = Request.Url.AbsoluteUri;
                    }
                }
            }
            else
            {
                errMsg += "<h1 class=\"ErrorMessage\">" + Resources.Site.ErrorSystemTip + "</h1><hr/> " +
                          "该信息已被系统记录,请稍后重试或与管理员联系。<br/>" +
                          "错误信息: <font class=\"ErrorPageText\">" + currentError.Message.ToString() + "<hr/>" +
                          "<b>Stack Trace:</b><br/>" + currentError.StackTrace + "</font>";

                model.Loginfo    = currentError.Message;
                model.StackTrace = currentError.StackTrace;
                model.Url        = Request.Url.AbsoluteUri;
            }
            ColoPay.BLL.SysManage.ErrorLog.Add(model);

            Session["ErrorMsg"] = errMsg;
            Server.Transfer("~/Supplier/ErrorPage.aspx", true);

            //考虑不Response当前页面,直接弹出信息提示。根据不同信息做不同的样式处理:系统提示,系统错误
            //Response.Write(errMsg);
            //Server.ClearError();
        }
Beispiel #4
0
 protected void BindPrivoces()
 {
     try
     {
         //ddlProvince.DataSource = bll.GetPrivoces();
         //ddlProvince.DataTextField = "RegionName";
         //ddlProvince.DataValueField = "RegionId";
         //ddlProvince.DataBind();
         //this.ddlProvince.Items.Insert(0, new ListItem("请选择", "0"));
         //if (_visibleall)
         //{
         //    this.ddlProvince.Items.Insert(0, new ListItem(_visiblealltext, "0"));
         //}
     }
     catch (Exception ex)
     {
         Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
         model.Loginfo    = ex.Message;
         model.StackTrace = ex.StackTrace;
         model.Url        = Request.Url.AbsoluteUri;
         BLL.SysManage.ErrorLog.Add(model);
     }
 }
Beispiel #5
0
 private void BindCity(int ParentId)
 {
     try
     {
         //ddlCity.DataSource = bll.GetDistrictByParentId(ParentId);
         //ddlCity.DataTextField = "RegionName";
         //ddlCity.DataValueField = "RegionId";
         //ddlCity.DataBind();
         //this.ddlCity.Items.Insert(0, new ListItem("请选择", "0"));
         //if (_visibleall)
         //{
         //    this.ddlCity.Items.Insert(0, new ListItem(_visiblealltext, "0"));
         //}
     }
     catch (Exception ex)
     {
         Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
         model.Loginfo    = ex.Message;
         model.StackTrace = ex.StackTrace;
         model.Url        = Request.Url.AbsoluteUri;
         BLL.SysManage.ErrorLog.Add(model);
     }
 }
Beispiel #6
0
 private void BindCity(int ParentId)
 {
     try
     {
         ddlCity.DataSource = bll.GetDistrictByParentId(ParentId);
         ddlCity.DataTextField = "RegionName";
         ddlCity.DataValueField = "RegionId";
         ddlCity.DataBind();
         this.ddlCity.Items.Insert(0, new ListItem("请选择", "0"));
         if (_visibleall)
         {
             this.ddlCity.Items.Insert(0, new ListItem(_visiblealltext, "0"));
         }
     }
     catch (Exception ex)
     {
         Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
         model.Loginfo = ex.Message;
         model.StackTrace = ex.StackTrace;
         model.Url = Request.Url.AbsoluteUri;
         BLL.SysManage.ErrorLog.Add(model);
     }
 }
Beispiel #7
0
 protected void BindPrivoces()
 {
     try
     {
         ddlProvince.DataSource = bll.GetPrivoces();
         ddlProvince.DataTextField = "RegionName";
         ddlProvince.DataValueField = "RegionId";
         ddlProvince.DataBind();
         this.ddlProvince.Items.Insert(0, new ListItem("请选择", "0"));
         if (_visibleall)
         {
             this.ddlProvince.Items.Insert(0, new ListItem(_visiblealltext, "0"));
         }
     }
     catch (Exception ex)
     {
         Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
         model.Loginfo = ex.Message;
         model.StackTrace = ex.StackTrace;
         model.Url = Request.Url.AbsoluteUri;
         BLL.SysManage.ErrorLog.Add(model);
     }
 }
Beispiel #8
0
        //错误处理
        protected void PageBase_Error(object sender, System.EventArgs e)
        {
            string errMsg = "";
            Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
            Exception currentError = Server.GetLastError();
            if (currentError is System.Data.SqlClient.SqlException)
            {
                System.Data.SqlClient.SqlException sqlerr = (System.Data.SqlClient.SqlException)currentError;
                if (sqlerr != null)
                {
                    string sqlMsg = GetSqlExceptionMessage(sqlerr.Number);
                    if (sqlerr.Number == 547)
                    {
                        errMsg += "<h1 >" + Resources.Site.ErrorSystemTip + "</h1><br/> " + sqlMsg;
                    }
                    else
                    {
                        errMsg += "<h1 >" + Resources.Site.ErrorSystemTip + "</h1><hr/> " +
                        "该信息已被系统记录,请稍后重试或与管理员联系。<br/>" +
                        "错误信息: " + sqlMsg;
                        model.Loginfo = sqlMsg;
                        model.StackTrace = currentError.ToString();
                        model.Url = Request.Url.AbsoluteUri;
                    }
                }
            }
            else
            {
                errMsg += "<h1 >" + Resources.Site.ErrorSystemTip + "</h1><hr/> " +
                    "该信息已被系统记录,请稍后重试或与管理员联系。<br/>" +
                    "错误信息: " + currentError.Message.ToString() + "<hr/>" +
                    "<b>Stack Trace:</b><br/>" + currentError.ToString();

                model.Loginfo = currentError.Message;
                model.StackTrace = currentError.ToString();
                model.Url = Request.Url.AbsoluteUri;

            }
            Maticsoft.BLL.SysManage.ErrorLog.Add(model);

            Session["CurrentError"] = errMsg;
            Server.Transfer("~/ErrorPage.aspx", true);

            //考虑不Response当前页面,直接弹出信息提示。根据不同信息做不同的样式处理:系统提示,系统错误
            //Response.Write(errMsg);
            //Server.ClearError();
        }
Beispiel #9
0
        /// <summary>
        /// 错误处理
        /// </summary>
        protected override void ControllerException(ExceptionContext filterContext)
        {
            // 标记异常已处理
            filterContext.ExceptionHandled = true;

            string errMsg = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";

            errMsg += string.Format("<title>系统发生错误 YSWLFK {0}{1}</title>", MvcApplication.Version, MvcApplication.IsAuthorize ? "" : P_DATA);
            errMsg += "<style>body{	font-family: 'Microsoft Yahei', Verdana, arial, sans-serif;	font-size:14px;}a{text-decoration:none;color:#174B73;}a:hover{ text-decoration:none;color:#FF6600;}h2{	border-bottom:1px solid #DDD;	padding:8px 0;    font-size:25px;}.title{	margin:4px 0;	color:#F60;	font-weight:bold;}.message,#trace{	padding:1em;	border:solid 1px #000;	margin:10px 0;	background:#FFD;	line-height:150%;}.message{	background:#FFD;	color:#2E2E2E;		border:1px solid #E0E0E0;}#trace{	background:#E7F7FF;	border:1px solid #E0E0E0;	color:#535353;	word-wrap: break-word;}.notice{    padding:10px;	margin:5px;	color:#666;	background:#FCFCFC;	border:1px solid #E0E0E0;}.red{	color:red;	font-weight:bold;}</style></head>";

            errMsg += "<body><div class=\"notice\"><h2>系统发生错误 </h2>";
            errMsg += "<div>您可以选择 [ <a href=\"javascript:location.reload();\" >重试</a> ] [ <a href=\"javascript:history.back()\">返回</a> ] 或者 [ <a target=\"_blank\" href=\"http://www.ys56.com/\">去官方网站找找答案</a> ]</div>";

            Model.SysManage.ErrorLog model = new Model.SysManage.ErrorLog();
            Exception       currentError   = filterContext.Exception;
            HttpContextBase context        = filterContext.HttpContext;

            context.Response.Clear();

            System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(currentError, true);
            int    fileLineNumber            = st.GetFrame(0).GetFileLineNumber();
            int    fileColumnNumber          = st.GetFrame(0).GetFileColumnNumber();
            string fileName = st.GetFrame(0).GetFileName();

            errMsg += "<p><strong>错误位置:</strong> File: <span class=\"red\">" + fileName + "</span> Line: <span class=\"red\">" + fileLineNumber + "</span> Column: <span class=\"red\">" + fileColumnNumber + "</span></p>";
            errMsg += "<p class=\"title\">[ 错误信息 ]</p>";
            //
            if (currentError is System.Data.SqlClient.SqlException)
            {
                System.Data.SqlClient.SqlException sqlerr = (System.Data.SqlClient.SqlException)currentError;
                if (sqlerr != null)
                {
                    string sqlMsg = GetSqlExceptionMessage(sqlerr.Number);
                    if (sqlerr.Number == 547)
                    {
                        //errMsg += "<h1 class=\"SystemTip\">" + Resources.Site.ErrorSystemTip + "</h1><br/> " +
                        //"<font class=\"ErrorPageText\">" + sqlMsg + "</font>";

                        errMsg += "<p class=\"message\">" + sqlMsg + "</p>";
                    }
                    else
                    {
                        //errMsg += "<h1 class=\"ErrorMessage\">" + Resources.Site.ErrorSystemTip + "</h1><hr/> " +
                        //"该信息已被系统记录,请稍后重试或与管理员联系。<br/>" +
                        //"错误信息: <font class=\"ErrorPageText\">" + sqlMsg + "</font>";
                        errMsg          += "<p class=\"message\">" + sqlMsg + "</p>";
                        model.Loginfo    = sqlMsg;
                        model.StackTrace = currentError.ToString();
                        model.Url        = context.Request.Url.AbsoluteUri;
                    }
                }
            }
            else
            {
                //errMsg += "<h1 class=\"ErrorMessage\">" + Resources.Site.ErrorSystemTip + "</h1><hr/> " +
                //    "该信息已被系统记录,请稍后重试或与管理员联系。<br/>" +
                //    "错误信息: <font class=\"ErrorPageText\">" + currentError.Message.ToString() + "<hr/>" +
                //    "<b>Stack Trace:</b><br/>" + currentError.ToString() + "</font>";
                errMsg += "<p class=\"message\">" + currentError.Message + "</p>";
                errMsg += "<p class=\"title\">[ StackTrace ]</p><p id=\"trace\">" + currentError.StackTrace + "</p></div>";
                errMsg +=
                    string.Format(
                        "<div align=\"center\" style=\"color:#FF3300;margin:5pt;font-family:Verdana\"> YS56FK <sup style=\"color:gray;font-size:9pt\">{0}</sup>",
                        MvcApplication.Version);
                errMsg += "<span style=\"color:silver\"> { Building &amp; OOP MVC YS56 Framework } -- [ WE CAN DO IT BETTER ]</span></div>";
                errMsg += "</body><style type=\"text/css\"></style></html>";

                model.Loginfo    = currentError.Message;
                model.StackTrace = currentError.ToString();
                model.Url        = context.Request.Url.AbsoluteUri;
            }
            //记录错误日志
            ColoPay.BLL.SysManage.ErrorLog.Add(model);

            //拦截潜在危险值错误, 转换为404输出
            if (!HttpContext.IsDebuggingEnabled &&
                currentError is HttpRequestValidationException)
            {
                filterContext.Result = new HttpNotFoundResult();
                context.Server.ClearError();
                return;
            }

            //拦截MVC的FindView未找到错误, 转换为404输出
            if (!HttpContext.IsDebuggingEnabled)
            //&& currentError.TargetSite.ToString().StartsWith("System.Web.Mvc.ViewEngineResult FindView"))
            {
                filterContext.Result = new HttpNotFoundResult();
                context.Server.ClearError();
                return;
            }

            //context.Session["ErrorMsg"] = errMsg;
            //// 跳转到错误页
            //filterContext.Result = new RedirectResult(Url.Action("ErrorPage", "ErrorPage"));

            //考虑不Response当前页面,直接弹出信息提示。根据不同信息做不同的样式处理:系统提示,系统错误
            //context.Response.Write(errMsg); //叠加所有View的错误信息并输出
            filterContext.Result = Content(errMsg);   //阻止之后的View错误输出, 只输出一次.

            context.Server.ClearError();
        }