服务器似乎以与本地应用程序不同的方式运行

时间:2016-06-17 07:59:30

标签: c# asp.net iis

我开发了一个公式,如果需要,可以由客户编辑。在我的本地应用程序中,当我想要更新表单时,一切都正常运行,,一旦我尝试更新网站上的公式,就会引发错误。这是错误所在的代码。

objectCollection = db.SelectFragebogen(sid, cbControls, tbControls);
objectCollection.RemoveAt(0);

try
{
    for (int i = 0; i < (cbControls.Count + tbControls.Count); i++)
    {
        if (i < cbControls.Count)
        {
           if ((bool)objectCollection.ElementAt(i) != cbControls.ElementAt(i).Checked) { cbUpdate.Add(cbControls.ElementAt(i)); }
        }
        else
        {
           if ((string)objectCollection.ElementAt(i) != tbControls.ElementAt(i - cbControls.Count).Text) { tbUpdate.Add(tbControls.ElementAt(i - cbControls.Count)); }
        }
    }
    db.UpdateFragebogen(sid, cbUpdate, tbUpdate);
}
catch (Exception ex)
{
    System.Diagnostics.Debug.WriteLine(ex.Message.ToString());
    Response.Redirect("EmptySite.aspx");
}

db.SelectFragebogen正在从数据库中选择整个公式。 RemoveAt只删除表单的ID。 cbControls是Checkbox-Elements列表,tbControls是Textbox-Elements列表。他们正在填补,我查了一下。

所以现在我们有了objectCollection,其中保存了“旧”值,以及2个控件列表,其中“new”值是。 for循环现在将比较旧值和新值,并将更改写入额外的集合(cbUpdate和tbUpdate),因为我不知何故需要知道更新的内容。

正如我所说的,如果我在我的本地应用程序中运行它一切都很好,并且它没有任何问题。一旦我尝试更新我的网站上的表单,就会抛出错误。

错误是“索引超出范围” - 错误。

1 个答案:

答案 0 :(得分:1)

调试try块并查看抛出IndexOutOfRange异常的行,并检查i的值。它可能就像改变

一样简单
(cbControls.Count + tbControls.Count) - 1

IValidatableObject
<标题中的