我有一个部署到Azure VM的.NET控制台应用程序。该实用程序非常简单,它只是查看表格并发送电子邮件。但是,我们在这一行上随机出错:
foreach (DataRow bcemail in BCEmails.Tables[0].Rows)
{
email.Subject = bcemail["subject"].ToString();
//other stuff
}
我们收到的错误说:列'subject'不属于表Table。我已经检查过存储的proc总是只返回1个表,并且总是将“subject”作为列。请记住,它的工作时间超过一半,只能随机提供错误。它在我的本地环境中完全正常。 Azure VM还有其他几个应用程序。研究这个问题,我找到了这个链接: http://www.ksvali.com/2010/08/solution-to-random-error-column-does-not-belong-to-table/ 其中讨论了损坏的数据库连接池,并建议您确保正确关闭连接。我在整个申请中都做到了这一点。该链接还提到我们每次停止IIS服务器时都使用“iisreset”。所以我尝试做一个IISReset并再次运行应用程序,它工作正常。如果我每次在计划运行之前执行IISReset,它都可以正常工作。
我的问题是这样的: 1.这是一个控制台应用程序,而不是Web应用程序,实际上在此VM上的IIS上没有配置网站。那么为什么IISReset有效呢? 2.除了每次都能进行IISReset之外,有人可以推荐任何其他方法来解决这个问题吗?
答案 0 :(得分:0)
向表中添加新列后出现此错误。代码已更新以引用新列,但未更新存储的适用产品。将新列添加到适用的存储过程后,此错误消失了。