powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка, связанная с открытием незакрытой базы
8 сообщений из 8, страница 1 из 1
Ошибка, связанная с открытием незакрытой базы
    #37708863
_Yuriy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все работает, но иногда, достаточно редко вылетает такая ошибка:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Ошибка сервера в приложении '/'.
Подключение не было закрыто. Подключение открыто.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.InvalidOperationException: Подключение не было закрыто. Подключение открыто.

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

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

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

[InvalidOperationException: Подключение не было закрыто. Подключение открыто.]
   System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +21
   System.Data.SqlClient.SqlConnection.Open() +122
   MP.L_status(Boolean prm_LeftMnu, String prm_s1, String prm_u1, String prm_s2, String prm_u2, String prm_s3, String prm_u3) +604
   Delta.Page_PreInit(Object sender, EventArgs e) +671
   System.Web.UI.Page.OnPreInit(EventArgs e) +8712206
   System.Web.UI.Page.PerformPreInit() +31
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +282


Информация о версии: Платформа Microsoft .NET Framework, версия:2.0.50727.4216; ASP.NET, версия:2.0.50727.4223


L_status – это Public Sub, которая находится в Master Page. В этой L_status и происходит открытие/закрытие базы. Но там ничего такого нет, открыл, получил данные, закрыл.

Из-за чего такое может происходить?
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37708912
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Yuriy_,

DbConnection лежит в статическое переменной?
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37708984
_Yuriy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtor_Yuriy_,

DbConnection лежит в статическое переменной?
Да. Строка подключения выглядит как:
Public ConnInter As New SqlConnection("Server=.\DELTAPRO; Database=DP_inter; Integrated Security=SSPI")
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37708993
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Yuriy_,

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

Epic fail на stackoverflow
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37709045
_Yuriy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtor_Yuriy_,

Добро пожаловать в суровый мир многопоточных приложений. Ваше соеденине будет шарится между всеми запросами к приложению, поэтому возможны самые невероятные и невоспроизводимые баги. Поэтому не используйте статические переменные.
Что-то я не понял. Если не использовать статичную переменную подключения, то как? Они там пишут про Session. А у меня сешн, кстати говоря, сохраняется в базе SQL Server.
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37709236
_Yuriy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtorПоэтому не используйте статические переменные.
Я правильно понимаю мысль? Что на время отработки процедуры надо сгенерировать случайным образом переменную. Этой переменной присвоить значение в виде строки подключения. А затем открывать/закрывать базу этой сгенерированной переменной?
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37709291
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Yuriy_,

1. Вам надо прочитать Рихтера, особенно тщательно разделы про многопоточность.
2. Почитать что-нибудь приличное про ASP.NET

Иначе будете по-прежнему изобретать велосипеды.
...
Рейтинг: 0 / 0
Ошибка, связанная с открытием незакрытой базы
    #37710362
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Yuriy_SolYUtorDbConnection лежит в статическое переменной?
Да. Строка подключения выглядит как:
Public ConnInter As New SqlConnection("Server=.\DELTAPRO; Database=DP_inter; Integrated Security=SSPI")
Это не статическая переменная. В VB.NET они объявляются с ключевым словом Shared.

_Yuriy_Что-то я не понял. Если не использовать статичную переменную подключения, то как?
Можно, и даже нужно, не хранить соединение на уровне класса, а создавать внутри методов по необходимости. То есть создали экземпляр SqlConnection, открыли соединение, сделали запрос(ы), закрыли соединение.

Ты, кстати, используешь windows аутентификацию для подключения к SQL серверу. Это осознанное решение? Дело в том, что в этом случае пул соединений .net не используется. И если у тебя все пользователи на самом деле подключатся под одним и тем же логином к БД, то эффективнее использовать аутентификацию SQL сервера.

_Yuriy_Они там пишут про Session.
Кто? Где? Что?

_Yuriy_Я правильно понимаю мысль? Что на время отработки процедуры надо сгенерировать случайным образом переменную. Этой переменной присвоить значение в виде строки подключения. А затем открывать/закрывать базу этой сгенерированной переменной?
Чисто из любопытства - как ты себе представляешь "генерирование случайной переменной"?

_Yuriy_MP.L_status(Boolean prm_LeftMnu, String prm_s1, String prm_u1, String prm_s2, String prm_u2, String prm_s3, String prm_u3)
Кроме введения в .NET и ASP.NET тебе точно не помешает прочитать что-то по стилю программирования т.к. названия параметров функции типа prm_s1 никуда не годятся. Советую Совершенный код Стива Макконнелла.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка, связанная с открытием незакрытой базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]