Указанный аргумент находится вне диапазона допустимых значений. В процессе обратной передачи с использованием Infragistics WebDialogWindow

У меня действительно странная проблема на веб-странице при обработке сообщения. Вот ошибка будет сопровождаться объяснением:

Ошибка: указанный аргумент находится вне диапазона допустимых значений. Имя параметра: значение Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений. Имя параметра: значение

Ошибка источника:

Во время выполнения текущего веб-запроса возникло необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировки стека:

[ArgumentOutOfRangeException: указанный аргумент находится вне диапазона допустимых значений. Имя параметра: значение]
System.Web.UI.WebControls.Unit..ctor(строковое значение, культура CultureInfo, тип UnitType по умолчанию) +8670188
System.Web.UI.WebControls.Unit.Parse(String s, CultureInfo, культура) +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
Система .Web.UI.Page.ProcessPostData(NameValueCollectio n postData, логическое значение fBeforeLoad) +693
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) +1743

Объяснение

Если вы посмотрите на трассировку стека, мы легко увидим, что .NET по-прежнему не проходит через мой код, поэтому я не могу поставить точку останова. Что еще более странно, так это то, что для ТОЧНО того же процесса, но с разными данными (на моей странице) он работает отлично. Пожалуйста, помогите мне, я занимаюсь этим около 3 часов!

ОБНОВЛЕНИЕ

Я должен сказать, что, когда он терпит неудачу (на данный момент проверено только 2 объекта на чем-то вроде 30), он терпит неудачу ТОЛЬКО на постбэке. На странице стало использоваться: Infragistics webdialogwindow и веб-элемент управления для обработки «видимого» свойства (скрытого или обычного, а не размера). Но, как кто-то сказал ниже (извините, не помню вашего имени), это точно относится к окну веб-диалога, но я просто НЕ обрабатываю его положение...

ОБНОВЛЕНИЕ 2

Мы пытались удалить значение столбца varchar(max) из базы данных, и теперь это работает!! Вау, мы не знаем, что и думать, потому что все вроде бы в порядке. Проблема в том, что мы ДОЛЖНЫ сохранить значение этого столбца!!! Кто-нибудь знает, что об этом думать? Этот varchar(max) отображается как Eval("DescriptionMemo") в списке данных.


person Simon Dugré    schedule 27.10.2009    source источник
comment
Это ваша проблема, ТОЧНО тот же процесс, но с другими данными (на моей странице), он отлично работает. Чем отличаются данные?   -  person rick schott    schedule 27.10.2009
comment
Это пост-подобная таблица, связанная с разными объектами. После удаления всего описания (обновление 2) все работает. Это поле представляет собой поле типа varchar(max). Как varchar(max) может привести к сбою моего кода?   -  person Simon Dugré    schedule 27.10.2009


Ответы (5)


Учитывая ваше обновление, вот обоснованное предположение.

Я мало что знаю о компоненте Infragistics WebDialog, но большинство диалогов центрированы на странице. Если ваш столбец как-то связан с расположением диалогового окна, возможно, он вычисляет положение диалогового окна на основе размера отображаемых данных.

Если данные слишком велики для отображения, это может поместить диалоговое окно в положение, которое теоретически находится за пределами допустимого диапазона значений класса Unit.

Если столбец скрыт, все в порядке, потому что диалоговое окно поместится в окне, а координаты (в частности, верхняя координата, как показано в вашей трассировке стека) будут отрицательными. Если бы он отображался, диалогового окна не было бы, потому что оно вышло бы за пределы окна браузера.

Это всего лишь теория и предположения, но они основаны на том, что мы видим здесь.

person Mike Hofer    schedule 27.10.2009
comment
Нет, вы совершенно правы. Потому что всплывающее окно было удалено внизу страницы, потому что ему все равно, где оно было на странице (в любом случае, это всплывающее окно), поэтому, когда оно пытается центрировать его, и страница отображает много данных (и это именно проблема, с которой я столкнулся, потому что она иногда ловила ошибку) она не работает для несовместимого преобразования на короткое время (-32767 и +32767) - person Simon Dugré; 28.10.2009
comment
Рад, что смог помочь! Интересно, что класс Unit принимает Int32 в качестве аргумента, а затем выдает исключение, когда аргументы выходят за пределы для Short. Мне придется приставать к Джону Скиту по этому поводу. - person Mike Hofer; 28.10.2009
comment
Да, это означает, что 2 человека и около 4 часов каждый решают проблему, которую трудно найти :o( и не по нашей вине. - person Simon Dugré; 28.10.2009
comment
В моем случае я указывал на неправильные папки. Как только я поместил папки в корень, все заработало нормально - person Muhammad Ali; 31.01.2020

Вы вызываете конструктор для System.Web.UI.WebControls.Unit с недопустимым набором параметров или как-то неправильно его инициализируете.

Вы устанавливаете единицу измерения где-нибудь в WebControl на странице aspx?

person Chris Ballance    schedule 27.10.2009
comment
Извините, может быть, я буду выглядеть новичком, но что вы имеете в виду о Unit of Webcontrol ... я видел это, но не знаю, что об этом думать. Я должен сказать, что я француз, так что это нормально, если некоторые слова кажутся мне пустяками, лол. Но впервые я получаю эту ошибку. - person Simon Dugré; 27.10.2009
comment
@Simon Какое значение вы отправляете в качестве единицы? - person Chris Ballance; 27.10.2009
comment
Я не передаю ни один блок ни чему ... но да, точно на странице, но для всех элементов управления, которые используют один и тот же элемент управления по разным запросам, всегда ТОЖЕ ЖЕ терпит неудачу, когда другие работают... - person Simon Dugré; 27.10.2009
comment
Я не могу, это слишком долго!! Это страница asp.net плюс .ascx. - person Simon Dugré; 27.10.2009

Я предполагаю, что вы отправляете что-то, что не может разобрать:

System.Web.UI.WebControls.Unit..ctor(строковое значение, культура CultureInfo, UnitType defaultType)

Как настроить свойства модуля управления веб-сервером

person rick schott    schedule 27.10.2009
comment
Да, это то, о чем я думаю, но все, на какой странице есть время, чтобы сделать свой OnInit(); События. После чего не получается - person Simon Dugré; 27.10.2009
comment
Саймон, вы перемещаете WebDialogWindow с помощью формулы? - person Mike Hofer; 27.10.2009
comment
Можете ли вы опубликовать код? Я думаю, все пока знают, почему у вас ошибка, но мы не можем сказать вам, что исправить, не видя чего-то. - person rick schott; 27.10.2009
comment
Я объясню больше в моем основном посте. Но я не могу опубликовать весь свой код, потому что там СЛИШКОМ МНОГО, и это не мой код, который глючит, он терпит неудачу, прежде чем войти. - person Simon Dugré; 27.10.2009

Согласно MSDN, ArgumentOutOfRangeException вызывается конструктором класса Unit, когда Аргумент value находится вне допустимого диапазона (не между -32768 и 32767). Каким-то образом это значение передается этому элементу на странице.

Теперь вы сказали, что передаете разные значения в разных запросах и что эти запросы работают. Какие ценности вы передаете этой работе? Какие значения, которые вы передаете, терпят неудачу?

РЕДАКТИРОВАТЬ: я вижу, что вы используете Infragistics WebDialogWindow и пытаетесь получить самую верхнюю координату диалогового окна. ЭТО координата, которая выключена. Он выходит за пределы допустимого диапазона значений для класса Unit. Теперь главный вопрос: почему это так?

person Mike Hofer    schedule 27.10.2009
comment
Ух ты! И это приводит к тому, что все .net не работает с ошибкой? Почему это не только ошибка Javascript? - person Simon Dugré; 27.10.2009
comment
Потому что это происходит на сервере до того, как страница будет отображена в браузере. - person Mike Hofer; 27.10.2009
comment
На данный момент ни один HTML-код еще не отрендерен; .NET все еще пытается собрать воедино все классы, необходимые для того, чтобы решить, как создать страницу. Но он не может создавать классы, потому что один из них имеет недопустимый параметр конструктора. - person Mike Hofer; 27.10.2009

Ваууууу! Ничего страшного! Все, что я могу сказать, это: если вы используете веб-диалоговое окно Infragistics с IntialLocation, установленным на «Centered». Поместите его в верхнюю часть страницы (в любом случае это «всплывающее окно», поэтому оно «поверх» содержимого вашей страницы). Потому что моя проблема заключалась в том, что когда страница имела длину более 32000 пикселей (не знаю точную длину), всплывающее окно не могло правильно найти окно, потому что оно не могло поместить его в int32... вау. Что за ошибка

person Simon Dugré    schedule 27.10.2009