[英]Receive “Could not load file or assembly”…“The system cannot find the file specified” error for DLL only on Production
[英]“Cannot find Table[0]” - Only in production?
生产服务器上的某些代码突然给我们带来了麻烦。 大约一年后生产没有变化,我已经确认数据库也没有变化。
如果我在机器上运行相同的代码(“是”,则是“源代码控制”!),则不会得到生产中出现的错误,并且一切正常。 我将在下面发布代码,但是还必须进行其他操作。
如果我错了,请更正我,但是如果没有Table [0] ,那意味着我的查询没有返回任何数据。 但是,直接通过SQL Management Studio运行相同的查询会为我提供所需的数据。
var ds = GetData(queryString);
if (ds.Tables.Count > 0)
{
var ddlDataSet = GetAdds();
}
private List<tAdd> GetAdds()
{
var ds = GetData(queryString);
var aList = new tAdd[ds.Tables[0].Rows.Count];//THIS IS WHERE ERROR HITS
//Do other stuff
...
}
private DataSet GetData(string queryString)
{
var connectionString =
ConfigurationManager.ConnectionStrings["constring"].ConnectionString;
var ds = new DataSet();
try
{
var connection = new SqlConnection(connectionString);
var adapter = new SqlDataAdapter(queryString, connection);
adapter.Fill(ds);
}
catch (Exception ex)
{
ErrorPanel.Visible = true;
ErrorPanel.Enabled = true;
SearchPanel.Enabled = false;
const string NotificationsEmail = "mailto:emailguy@email.com";
ErrorAlertLabel.Text =
"An err happened. " +
"Please contact the people who do stuff ";
ErrorAlertLabel.Visible = true;
ErrorMessageLiteral.Text = "<br />" + "<br />" +
"Message: " + ex.Message + "<br />" +
"StackTrace: " + ex.StackTrace + "<br />" +
"Inner Exception: " + ex.InnerException + "<br />" +
"Full Detals: " + ex + "<br />";
ErrorMessageLiteral.Visible = true;
}
return ds;
}
我可能只是尝试再次重新发布相同的版本,但是谁知道这是否可以解决它。 如果有人需要更多信息,请提前告知我并谢谢您。
实际的错误文本: “ System.IndexOutOfRangeException:找不到表0。”
我认为您在暴露的错误处理方面仍然存在缺陷。
在GetData
,您捕获发生的任何Exception
,并将一堆UI元素设置为Visible并用信息填充它们,但是您不会阻止该过程继续 。 GetData
只是在catch
块之后继续,并返回一个空的DataSet
。 GetAdds
忽略了以下事实:发生了错误,尝试访问DataSet
中不存在的表,并引发了另一个异常,该异常不是由您的代码处理,而是由ASP.NET处理,从而丢弃了所有错误信息,并仅显示一般错误页面。
我不会在低级方法中使用此类详细的错误处理,而是添加更多的全局错误处理。 由于您没有在异常中添加任何有意义的信息,因此,我会让它冒泡并在应用程序级别进行处理。
如果要向低级异常添加更多信息,请抛出一个具有更多详细信息的新异常,并将原始异常分配给新异常的InnerException
属性。
请检查生产中是否有任何pdb文件,如果没有,请转到项目,右键单击“构建”->“高级”->“调试信息”->“ pdb”下的“属性”,然后在生产环境中运行该文件,
如果您有这些内容,则可以得到它正在中断的确切行。
如果生产中的表上存在死锁,则可能会发生这种情况。 或权限丢失。
今天工作了。 我终于找到了我们的Web管理员,并要求他重新启动Web服务器-在我确认我的代码和数据库不是问题之后。
Web服务器启动后,一切都可以正常工作。 服务器上运行着许多应用程序,因此可能有些事情变得复杂了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.