所以我正在制作一个应用程序,一切运行良好,直到发生以下情况:
我已经检查了调试器,但我找不到导致此异常的确切原因。我有一种感觉,根本原因是在SQL方面,因为这是我最近改变的唯一部分,但我需要知道NullReferenceException
的确切位置,以便知道SQL代码到底是什么固定。
这是一个堆栈跟踪,如果有帮助(我不希望你们知道究竟是什么导致了NullReferenceException
,我似乎无法找到它并且我完全迷失了):
[NullReferenceException: Object reference not set to an instance of an object.]
iTextSharp.text.pdf.PdfPRow.CopyContent(PdfPRow copy) +124
iTextSharp.text.pdf.ColumnText.GoComposite(Boolean simulate) +8178
iTextSharp.text.pdf.ColumnText.Go(Boolean simulate) +203
iTextSharp.text.pdf.ColumnText.Go() +33
iTextSharp.text.pdf.PdfDocument.AddPTable(PdfPTable ptable) +426
iTextSharp.text.pdf.PdfDocument.Add(IElement element) +7594
iTextSharp.text.Document.Add(IElement element) +394
BigYOperationsConsole.Helpers.PdfHelper.ChecklistPdfStream(Checklist cl) in C:\workspace\BigYOperationsConsole\Helpers\PdfHelper.cs:129
BigYOperationsConsole.Controllers.ChecklistsController.ExportPDF(Int32 id) in C:\workspace\BigYOperationsConsole\Controllers\ChecklistsController.cs:776
lambda_method(Closure , ControllerBase , Object[] ) +150
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +51
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +409
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +52
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +127
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +436
System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +61
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +305
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830
System.Web.Mvc.Controller.ExecuteCore() +136
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +232
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +39
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +68
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +44
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +42
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +141
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +54
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +61
System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +31
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +56
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +110
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +690
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +194
更新:这似乎是iTextSharp 5.0.6中的colspans错误。我升级到5.1.1,现在一切正常。有关详细信息,请参阅下面的评论。奇怪的是,一切都在使用5.0.6 ......
答案 0 :(得分:3)
我会做以下事情:
首先,按如下所述调整VS:
1)转到Debug - &gt; Exceptions对话框并检查Common Language Runtime Exceptions并选中Thrown列中的复选框;
2)转到工具 - &gt;选项 - &gt;调试并取消选中启用我的代码(仅管理)复选框。
现在运行该项目并尝试重现此问题。上面的设置应该强制调试器停止在抛出异常的方法。如果您不拥有此库的源,请使用Reflector分析此方法的代码。希望,这有帮助。
答案 1 :(得分:0)
当您尝试调用doc
方法时,.add
变量为null。需要查看其余的方法或更多代码来找出原因。
答案 2 :(得分:0)
当对象本身为null时,尝试访问对象成员时抛出NullReferenceException。 doc
变量是设置为对象的实例还是为空?也可能1)checklistTable为null或2)checklistTable的引用类型成员之一为null。如果其中任何一个都是真的并且doc对象的.Add()方法中的代码正在尝试引用这样的成员,那么你将获得该异常。
另一个很好的调试技巧是转到Windows&gt;调试&gt;堆栈跟踪。当您遇到异常时,您实际上可以向后跟随调用堆栈并查看每个调用的范围以查看什么是null。
编辑好的,所以checklistTable不能为null或者你之前得到一个异常(我没有看好你的代码)。但是,其中一个成员仍然可以为null,如果在.Add()方法中引用该成员的一个成员,则会得到该异常。