ajax mvc error,C# MVC 全局错误Application_Error中处理(包括Ajax请求)

///

///全局错误///

///

///

protected void Application_Error(objectsender, EventArgs e)

{

Exception ex=Server.GetLastError();

LogHelper.Error(ex);//记录错误日志(NLog 挺好用的(* ̄︶ ̄))

if (Context.Handler == null)

{return;

}if (newHttpRequestWrapper(Request).IsAjaxRequest())

{

Response.Clear();

Response.ContentType= "application/json; charset=utf-8";

Response.Write("{"state":"0","msg":"" + ex.Message + ""}");

Response.Flush();

Response.End();

}else{//方案一 重定向到错误页面,带上简单的错误信息//string errurl = "/Error/Error?msg=" + ex.Message;//Response.Redirect(errurl, true);//方案二 带上错误对象,转到错误页

Response.Clear();

RouteData routeData = new RouteData();

routeData.Values.Add("Controller", "Shared"); // 已有的错误控制器

routeData.Values.Add("Action", "Error"); // 自定义的错误页面

Server.ClearError();

SharedController controller = new SharedController(); // 自定义错误页面控制器

string errController = Request.RequestContext.RouteData.Values["Controller"].ToString();

string errAction = Request.RequestContext.RouteData.Values["Action"].ToString();

HandleErrorInfo handleErrorInfo = new HandleErrorInfo(ex, errController, errAction);

controller.ViewData.Model = handleErrorInfo; //传错误信息

RequestContext requestContext = new RequestContext(new HttpContextWrapper(Context), routeData); // 封装与已定义路由匹配的HTTP请求的信息

((IController)controller).Execute(requestContext); //执行上下文请求

Response.End();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值