“指定された引数は有効な値の範囲外でした。” Infragistics WebDialogWindowを使用したポストバックのプロセスで
-
06-07-2019 - |
質問
ポストバックの処理中に、Webページで本当に奇妙な問題が発生しました。エラーは説明を許可しません:
エラー: 指定された引数は有効な値の範囲外でした。 パラメーター名:値 説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細とコードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.ArgumentOutOfRangeException:指定された引数は有効な値の範囲外でした。 パラメーター名:値
ソースエラー:
現在のWeb要求の実行中に、未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して特定できます。
スタックトレース:
[ArgumentOutOfRangeException: 指定された引数は 有効な値の範囲。パラメータ名: 値]
System.Web.UI.WebControls.Unit..ctor(String 値、CultureInfoカルチャ、UnitType defaultType)+8670188
System.Web.UI.WebControls.Unit.Parse(String s、CultureInfo culture)+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、ブールfBeforeLoad)+693
System.Web.UI.Page.ProcessRequestMain(ブール includeStagesBeforeAsyncPoint、ブール includeStagesAfterAsyncPoint)+1743
説明
スタックトレースを見ると、.NETがまだコードを通過していないため、ブレークポイントを設定できません。もっと奇妙なことは、まったく同じプロセスですが、異なるデータ(私のページ上)がある場合、非常にうまく機能することです。私を助けてください、それについて約3時間IM!
更新
失敗したとき(今のところ、テスト済みの30のようなものの2つのオブジェクトのみ)、ポストバックでのみ失敗する、と言わざるを得ません。 Infragistics webdialogwindowおよび「可視」を処理するwebcontrolを使用するページになります。プロパティ(非表示または通常のサイズではない)のような。しかし、誰かが以下に言ったように(申し訳ありませんがあなたの名前を覚えていません)、webdialogwindowに関しては確かですが、私はそれの位置を処理しません...
UPDATE 2
データベースからvarchar(max)列の値を削除しようとしましたが、現在は有効です!!すべてが大丈夫そうに見えるので、何を考えるべきかわかりません。問題は、この列の値を MUST に保つことです!!!誰もそれについてどう思うか知っていますか?このvarchar(max)は、データリストにEval(" DescriptionMemo")として表示されます。
解決
更新を考えると、これは経験に基づいた推測です。
Infragistics WebDialogコンポーネントについてはあまり知りませんが、ほとんどのダイアログはページ上で中央揃えです。列がダイアログの配置と関係がある場合、表示されているデータのサイズに基づいてダイアログの位置を計算している可能性があります。
データが大きすぎて表示できない場合、理論的にはUnitクラスの許容範囲の値の範囲外の位置にダイアログが配置される可能性があります。
列が非表示の場合、ダイアログはウィンドウに収まり、座標(具体的には、スタックトレースに示されているようにトップ座標)は負になるため、すべてが正常です。表示される場合、ダイアログはブラウザウィンドウの範囲を超えて広がるため、表示されません。
これはすべて理論と推測に過ぎませんが、ここで見ることができるものに基づいています。
他のヒント
無効なパラメーターセットを使用して System.Web.UI.WebControls.Unit
のコンストラクターを呼び出しているか、何らかの方法でこれを不適切に初期化しています。
aspxページのWebControlのどこかにユニットを設定していますか?
推測できないのは、解析できないものを送信していることです:
System.Web.UI.WebControls.Unit..ctor(文字列値、CultureInfo culture、UnitType defaultType)
MSDN によれば、UnitクラスのArgumentOutOfRangeExceptionがスローされます。値引数が範囲外の場合のコンストラクター(-32768〜32767の間ではない)。どういうわけか、それがページ上のその要素に渡される値です。
今、あなたは異なるリクエストで異なる値を渡していること、そしてそれらのリクエストが機能することを言っています。あなたがその仕事を渡している値は何ですか?失敗する値は何ですか?
編集:Infragistics WebDialogWindowを使用していること、およびダイアログの最上位の座標を取得しようとしていることがわかります。それはオフになっている座標です。 Unitクラスの有効な値の範囲外です。大きな問題は、なぜそうなのか
Wowwwww!大丈夫です!私が言えることはすべて: IntialLocationを「Centered」に設定してInfragistics webdialogwindowを使用している場合。ページの上部に配置します(とにかく「ポップアップ」なので、ページコンテンツの「上」に表示されます)。私の問題は、ページが32000px lenght(正確な長さのdunno)ポップアップがint32に入れることができないので、ウィンドウを正しく見つけることができなかったということです。なんというバグ