Web-расширение - ошибка Object reference not set to an object. #454774


#0 by VitaminC
Разработано приложение на базе веб-расширения. Периодически, на разных этапах, безо всякой системы выпадает ошибка: Server Error in '/' Application. -------------------------------------------------------------------------------- Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. Простое обновление страницы несколько раз отрабатывает нормально, потом выдает вышеуказанную ошибку. Причем в разных местах, на разных объектах одного модуля. Поиск по форумам ничего не дал к сожалению. Кто сталкивался с этой проблемой, поделитесь соображениями.
#1 by 1c_asp
С проблемой сталкивался. Конкретного рецепта предложить к сожалению не могу. Я переписывал куски кода, где вываливалась эта ошибка. Как правило там были некоторые косяки. После этого такое сообщение стало вылазить крайне редко. Еще такое вроде бывает, когда кончается тайм аут сессии. Я это борол достаточно сложно, переписыванием всех коннектов к базе на собственный код и хранением параметров соединения в параметрах сессии
#2 by AquaKosh
Чувство у меня такое, что временами где-то NULL появляется вместо объекта...
#3 by VitaminC
>Как правило там были некоторые косяки. Какого рода косяки? Что примерно искать нужно? У меня тоже код в основном собственный, с созданием коннектов и работы с объектами. Возможно из-за малого опыта в веб-программировании и криво что-то написал. Но по этой ошибке никаких выводов сделать не могу. Не пойму даже в какую сторону думать ( Что интересно, на своем сервере ни разу ни удалось получить эту ошибку. У клиента - вываливается регулярно.
#4 by VitaminC
Да, ссылка явно пустая получается. Но как? Почему? Почему посреди модуля (часть кода успевает отработать)?
#5 by 1c_asp
Точнее не NULL а неспозиционированный объект
#6 by 1c_asp
В какой функции у тебя эта ошибка вываливается ? Попробуй переместить в другую функцию, выполняющуюся позже. Например из OnLoad в PreRender
#7 by 1c_asp
Припоминаю, кажется были у меня такие ошибки. Возникали непонятно откуда и непонятно как раньше работали. Лечились, насколько помню именно через
#8 by VitaminC
Page_Load Что значит через ? Вот допустим на строке reader = (V8DataReader)cmd.ExecuteReader; спотыкается, проверю я на Null, и что делать дальше? Еще раз пытаться отработать код с начала?
#9 by 1c_asp
А connection для этого cmd ты откуда берешь ?
#10 by VitaminC
static V8DbConnection connection = new V8DbConnection; ...    protected void Page_Load(object sender, EventArgs e)    {    ...    try        {                    ВЫБРАТЬ ПЕРВЫЕ 1 Сотрудник,        }    }
#11 by 1c_asp
}    ... <а вот тут потеряться коннекшн не может ?>    try
#12 by 1c_asp
А на каких точно строках падает можешь сказать ?
#13 by VitaminC
По логике программы - нет, вот тот кусок: Я многоточиями заменил получение/обработку данных, на которых по идее ничего такого случаться не должно, чтоб код более читаемый был. На всех строчках reader = (V8DataReader)cmd.ExecuteReader (их там 6 штук), иногда на строках: но тут другая ошибка: External component has thrown an exception. Причем эти строки идут подряд, иногда падает на первой, иногда на второй. Сам понимаешь, между ними ничего не происходит, точнее не должно происходить неординарного.
#14 by 1c_asp
Ну тогда, кроме как окропить сервер святой водой, у меня идей нет. ExecuteReader у меня никогда не падал без ошибки в коде
#15 by VitaminC
Спасибо что попытался помочь. На других форумах и в партнерском вообще ничего..
#16 by 1c_asp
Можно попробовать пошаманить - подвигать код в функции, выполняющиеся позднее. Например в PreRender. Мне пару раз такое шаманство помогло при непонятных косяках
#17 by 1c_asp
еще не уверен, а точно нужна static ? V8DbConnection connection Я в каждой функции заново открываю соединение, тормозов нет, т.к. все равно используется кэш.
#18 by VitaminC
Да, статик остался от старых экспериментов, когда я пытался увеличиить производительность. Почему-то не всегда использует кэшированные соединения, иногда создает новые, из-за чего тормоза. Статик не нужен, уберу.
#19 by 1c_asp
Новое соединение создается тогда, когда идет утечка памяти. Крайне рекомендую включить контроль освобождения объектов (как это сделать написано в самом конце книге о web расширении)
#20 by VitaminC
Трассировка неосвобожденных объектов по дефолту включена у меня на сервере разработки для всех проектов, тут дело в чем-то другом.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С