0

我从我的应用程序中收到以下异常: 在此处输入图像描述

异常中的#1681行指向我的应用程序代码中的这一行: 在此处输入图像描述

其中iSC_Queue是一个简单的 DTO 类,如下所示:

public class iSC_Queue
{
    public string ID                  { get; set; }
    public string TriggerTableName    { get; set; }
    public string TriggerTableID      { get; set; }
    public string TriggerTableIDValue { get; set; }
}

这怎么可能?我很确定,列表初始化不会产生这个索引越界错误。它一定发生在我的“Parse Queue Entries”代码块中的某个地方。

如何获得 C# 异常以显示错误所在的实际行/堆栈跟踪?

4

5 回答 5

2

看起来这不是您所在的线路,您可能在不同的线路上出错。

您正在看到一个消息框,因此它必须在您的尝试捕获部分之一中。

如果您在下一节中解析字符串,很可能您正在尝试将字符串拆分为几部分,而您没有得到您期望的子字符串数量。

如果您显示更多代码,我们可以提供更多帮助吗?

于 2013-07-10T09:12:52.780 回答
0

您是否绝对确定消息框的屏幕截图来自您的应用程序的当前版本(即使您只是在代码中删除或添加空行以使其更具可读性)?

如果出现编译错误,VS 很有可能运行较旧的二进制文件,然后可以切换行号。否则,应用程序应该不可能指向那条线。

于 2013-07-10T09:41:56.940 回答
0

异常消息中给出的行号不是来自应用程序的 .exe 或 .dll 文件;它来自一个 .pdb 文件。如果不存在 .pdb 文件,则根本不会获得行号,而只会获得距方法开头的字节偏移量。

如果您获得的行号似乎与您的源代码不对应,那么 [a] 行号是正确的,但您正在查看源代码的错误版本,或者 [b] 行号不正确,因为您的应用程序文件和 .pdb 文件不同步(也许上次将新版本安装到服务器时,没有安装新的 .pdb 文件,所以旧的仍然存在)。

于 2013-07-11T07:59:14.830 回答
0

尝试这个

[Serializable()]
 public class iSC_Queue
 {
     public string ID { get; set; }
     public string TriggerTableName { get; set; }
     public string TriggerTableID { get; set; }
     public string TriggerTableIDValue { get; set; }
 }
于 2013-07-10T09:21:20.957 回答
0

本身不是一个答案 - 而是对我读过的一些人的反驳。我偶然发现了这一点,同时试图弄清楚为什么我会遇到同样的错误:

List<string> strTemp = new List<string>();

(针对 html 渲染进行了编辑 - 错过了 <string> 标签)ON OCCASSION

至少,这是指向的线。我添加了“偶尔”,因为它并不总是发生。通常情况下(几乎没有,它很接近),代码按预期工作。但是,偶尔(一次几天 - 几周?)它会不断抛出上述内容。然后,过了一会儿,它停止了。作为记录,用于 Web 服务的 .pdb 和 .dll 部署和日期相同,因此不会出现代码不匹配的情况。

另请注意:这是我启动的特定代码的第四个版本(隐藏功能,直到我做对了)。在所有4个版本中,偶尔会出现错误,并且在所有4个版本中,错误都指向上述行(4个不同的行号,由于更改)

我一直倾向于 Windows/chrome 更新导致问题来来去去,但这只是一个疯狂的猜测,因为我还没有找到更好的答案。

于 2017-02-22T22:30:37.980 回答