Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在调试服务器上发生System.NullReferenceException异常_C#_Debugging_Exception_Exception Handling - Fatal编程技术网

C# 正在调试服务器上发生System.NullReferenceException异常

C# 正在调试服务器上发生System.NullReferenceException异常,c#,debugging,exception,exception-handling,C#,Debugging,Exception,Exception Handling,我有一个ASP.NETMVC应用程序。其中一个方法是抛出System.NullReferenceException“对象引用未设置为对象的实例”。不幸的是,这只发生在服务器上,本地版本的代码工作得非常好。我如何调试它以了解哪个对象导致了问题,或者至少代码处理在哪个行号上停止?首先,使用一个合适的日志框架并尝试…捕获块以获取关于问题大致位置的信息。打印堆栈跟踪 然后尝试缩小问题的范围: 如果可能的话,试着去做 添加Trace.WriteLine或Debug.Assert语句,并检查传入参数的值是

我有一个ASP.NETMVC应用程序。其中一个方法是抛出System.NullReferenceException“对象引用未设置为对象的实例”。不幸的是,这只发生在服务器上,本地版本的代码工作得非常好。我如何调试它以了解哪个对象导致了问题,或者至少代码处理在哪个行号上停止?

首先,使用一个合适的日志框架并尝试…捕获块以获取关于问题大致位置的信息。打印堆栈跟踪

然后尝试缩小问题的范围:

  • 如果可能的话,试着去做
  • 添加
    Trace.WriteLine
    Debug.Assert
    语句,并检查传入参数的值是否在预期范围内
  • 在服务器上获取可在ASP.NET中直接访问的日志记录

如果你在Azure上,你可以进行远程调试。如果此代码当前没有上线,那么应该可以在整个事件上放置一个try catch,并在catch上获取一个参数
(异常e)
,该参数将输出到消息框中,如
MessageBox.Show(e.ToString())希望这有帮助首先,打印堆栈跟踪以显示引发异常的特定方法。接下来,重构该方法,将其提取为越来越小的方法。最终,您将根据堆栈跟踪找到罪魁祸首。有时方法很难调试,仅仅因为它们太长了。