HandleErrorInfo-模型为空?我有一个即将发布的MVC2Web应用程序。到目前为止,我已经关闭了自定义错误,但我希望它们在我准备好投入生产时工作。我已经使用以下内容设置了我的web.config:404完美运行,NotFound是一个直接映射到View的操作,它只是使用我自己的Site.Master文件显示一个非常标准的404页面。对于404之外的任何其他情况,我希望用户能够查看异常详细信息。(这是一个内部应用程序,这样做没有安全风险)。错误默认操作Index设置为返回我定义的View()。我不知道如何将异常信息传递给View?看起来很有前途:HowtouseCustomErrorsinASP.NETMVC2butwhenIuseView:<%@PageTitle=""Language="C#"MasterPageFile="~/Views/Shared/Bootstrap.Master"Inherits="System.Web.Mvc.ViewPage"%>由于HandleErrorInfo为null,所以错误页面本身会抛出错误。显然,自定义错误中的错误可能会导致MVC2出现大量问题,从而导致死机黄屏。我想我要么在博客中遗漏了一些重要的东西,要么它没有解释如何在不为我的每个控制器/动作设置Error属性的情况下使HandleErrorInfo成为除null以外的任何东西。另外,我知道MVC3处理得更好,而且我非常了解Razor。本项目中没有使用过,本项目也不会改用它。所以请不要回答“使用MVC3”。HandleErrorInfo为空,因为您正在customErrors中进行重定向。这是我在最新项目中尝试的一个想法,我已更新到MVC2。我没有使用customErrors,因为我无法在不进行重定向的情况下调用控制器操作(我猜)。应用程序错误protectedvoidApplication_Error(Objectsender,EventArgse){GlobalErrorHandler.HandleError(((HttpApplication)sender).Context,Server.GetLastError(),newErrorController());}全局错误处理程序publicclassGlobalErrorHandler{publicstaticvoidHandleError(HttpContextcontext,Exceptionex,Controllercontroller){LogException(ex);context.Response.StatusCode=GetStatusCode(ex);context.ClearError();context.Response.Clear();context.Response.TrySkipIisCustomErrors=true;如果(IsAjaxRequest(context.Request)){ReturnErrorJson(context,ex);返回;}ReturnErrorView(context,ex,controller);}publicstaticvoidLogException(Exceptionex){//记录异常}privatestaticvoidReturnErrorView(HttpContextcontext,Exceptionex,Controllercontroller){varrouteData=newRouteData();routeData.Values["controller"]="Error";routeData.Values["action"]=GetActionName(GetStatusCode(ex));controller.ViewData.Model=new哈ndleErrorInfo(例如,“”,“”);((IController)controller).Execute(newRequestContext(newHttpContextWrapper(context),routeData));}privatestaticvoidReturnErrorJson(HttpContextcontext,Exceptionex){varjson=string.Format(@"success:false,error:""{0}""",ex.Message);context.Response.ContentType="application/json";context.Response.Write("{"+json+"}");}privatestaticintGetStatusCode(Exceptionex){返回ex是HttpException吗?((HttpException)ex).GetHttpCode():500;}privatestaticboolIsAjaxRequest(HttpRequestrequest){returnrequest.Headers["X-Requested-With"]!=null&&request.Headers["X-Requested-With"]=="XMLHttpRequest";}privatestaticstringGetActionName(intstatusCode){stringactionName;switch(statusCode){case404:actionName="NotFound";休息;case400:actionName="InvalidRequest";休息;案例401:actionName="AccessDenied";休息;默认值:actionName="ServerError";休息;}返回动作名;}publicstaticboolIsDebug{get{booldebug=false;#ifDEBUGdebug=true;#endif返回调试;}}}错误控制器publicclassErrorController:Controller{publicActionResultAccessDenied(){returnView("AccessDenied");}publicActionResultInvalidRequest(){returnView("InvalidRequest");}publicActionResultNotFound(){returnView("NotFound");}publicActionResultServerError(){returnView("ServerError");上图是C#学习教程:HandleErrorInfousingMVC2-modelisempty?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——》%>ServerErrorServerErrorController:Action:Message:StackTrace:本文收集自互联网,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处:
