我的程序日志记录代码如下:
protected override void OnException(ExceptionContext filterContext){ log4net.Error("【IP】" + filterContext.HttpContext.Request.UserHostAddress + "\r\n\r\n" + "【Url】" + filterContext.HttpContext.Request.Url.AbsoluteUri + "\r\n\r\n" + "【Message】" + filterContext.Exception.Message + "\r\n\r\n" + "【StackTrace】" + filterContext.Exception.StackTrace + "\r\n\r\n");}
得到的日志信息如下:
【Message】Object reference not set to an instance of an object.【StackTrace】 at ASP._Page_Views_List_test_cshtml.Execute() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
这是一个很常见的“Object reference not set to an instance of an object”错误,IP跟URL没帖出来,通过这个日志我仅能知道是哪个页面出错了,但不能精确地知道错误的出错位置,请问有没有办法可以精确地定位。
9 回答
森林海
TA贡献2011条经验 获得超2个赞
VS菜单“DEBUG”->"Exceptions",把CLR Exceptions下的System下的System.NRE钩选成thrown,再debug,这样就会在任何抛出NRE的时候不catch而直接进入调试。
交互式爱情
TA贡献1712条经验 获得超3个赞
ASP._Page_Views_List_test_cshtml 是该变量为null,还是ASP._Page_Views_List_test_cshtml.Execute()函数中的某个变量是null? 你可以实际测试下,看下抛的异常是如何定位的.
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
一般碰到这种情况我都是用最笨的办法,给可能出现异常的代码前加上一堆记录日志和关键数据的方法,然后等着下次出错的 时候看日志,不然还真拿这种偶尔出现又无从调试的错误没辙啊
- 9 回答
- 0 关注
- 594 浏览
添加回答
举报
0/150
提交
取消