1

在处理回帖时,我在网页上遇到了非常奇怪的问题。这是错误的解释:

错误: 指定的参数超出有效值的范围。参数名称:value 说明:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。参数名称:值

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[ArgumentOutOfRangeException:指定的参数超出了有效值的范围。参数名称:value]
System.Web.UI.WebControls.Unit..ctor(String value, CultureInfoculture, UnitType defaultType) +8670188
System.Web.UI.WebControls.Unit.Parse(String s, CultureInfoculture) +31
Infragistics .Web.UI.Framework.ControlObject.ConvertToUnit(Object obj, Unit def, Boolean allowNegative) +399 Infragistics.Web.UI.LayoutControls.WebDialogWindow.get_Top() +74 Infragistics.Web.UI.LayoutControls.DialogWindowBot.LoadClientPropsTransactionList(Dictionary `2 列表) +350
Infragistics.Web.UI.Framework.ObjectBase.LoadTransactionList(Boolean deferLoadPostDataProcessing) +57
Infragistics.Web.UI.Framework.RunBot.LoadClientData() +57 Infragistics.Web.UI.Framework.RunBot.HandleLoadPostData(String postDataKey, NameValueCollection postCollection) +14
Infragistics.Web.UI.Framework.ControlMain.LoadPostData(String postDataKey, NameValueCollection postCollection) +19
System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +693
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1743

解释

如果您查看堆栈跟踪,我们很容易看到 .NET 仍然没有通过我的代码,所以我不能放置任何断点。更奇怪的是,对于完全相同的过程,但数据不同(在我的页面上),它工作得很好。请帮帮我,我花了大约 3 个小时!

更新

我不得不说,当它失败时(现在只有 2 个对象,比如 30 个测试对象),它仅在回发时失败。它在页面上使用:Infragistics webdialogwindow 和 webcontrol 来处理“可见”属性(隐藏或正常而不是大小)。但正如下面有人所说(对不起,不记得你的名字),肯定是关于 webdialogwindow 但我只是不处理它的位置......

更新 2

我们试图从数据库中删除一个 varchar(max) 列的值,现在它正在工作!哇,我们不知道该怎么想,因为一切看起来都很好。问题是我们必须保持这个列的值!!!有人知道该怎么想吗?此 varchar(max) 在数据列表中显示为 Eval("DescriptionMemo")。

4

5 回答 5

1

您正在System.Web.UI.WebControls.Unit使用无效的参数集调用构造函数,或者以某种方式不正确地初始化它。

您是否在您的 aspx 页面中的 WebControl 上的某处设置了一个单元?

于 2009-10-27T18:50:11.970 回答
1

我的猜测是您正在发送无法解析的内容:

System.Web.UI.WebControls.Unit..ctor(字符串值,CultureInfo 文化,UnitType defaultType)

如何:设置 Web 服务器控制单元属性

于 2009-10-27T18:53:56.473 回答
1

鉴于您的更新,这是一个有根据的猜测。

我对 Infragistics WebDialog 组件了解不多,但大多数对话框都页面为中心。如果您的列与对话框的位置有关,则可能是根据正在显示的数据的大小计算对话框的位置。

如果数据太大而无法显示,则可能会将对话框置于理论上超出 Unit 类可接受值范围的位置。

如果该列被隐藏,一切都很好,因为对话框将适合窗口,并且坐标(特别是顶部坐标,如堆栈跟踪中所示)将为负数。如果显示,对话框不会显示,因为它会超出浏览器窗口的范围。

这只是理论和推测,但它是基于我们在这里所看到的。

于 2009-10-27T23:56:41.173 回答
0

根据MSDN,当 value 参数超出范围(不在 -32768 和 32767 之间)时,Unit 类的构造函数会抛出 ArgumentOutOfRangeException。不知何故,这就是传递给页面上该元素的值。

现在,您已经说过您在不同的请求中传递不同的值并且这些请求有效。您传递该工作的价值观是什么?您传递的失败值是什么?

编辑:我看到您正在使用 Infragistics WebDialogWindow,并且您正在尝试获取对话框的最高坐标。那是关闭的坐标。它超出了 Unit 类的有效值范围。现在最大的问题是为什么会这样?

于 2009-10-27T18:52:51.777 回答
0

哇哇哇!没关系!我只能说:如果您使用 Infragistics webdialogwindow 并将 IntialLocation 设置为“居中”。把它放在页面的顶部(无论如何它是一个“弹出窗口”,所以它“覆盖”了你的页面内容)。因为我的问题是,当页面显示更多时,32000px 长度(不知道确切长度)弹出窗口无法正确定位窗口,因为它不能把它放在 int32 中......哇。什么错误

于 2009-10-27T20:00:54.403 回答