Случайная ошибка 500 Свойство ConnectionString не было инициализировано

Я использую ту же ConnectionString с тех пор, как наш сайт был в сети в июле 2010 года, и у меня никогда не было проблем с подключением и взаимодействием с нашей базой данных.
Однако с июля 2011 года я продолжаю получать случайные сообщения «Свойство ConnectionString не было инициализированные "ошибки.

  • Как возникает ошибка?

Наш сайт работает нормально в течение переменного периода времени (от нескольких часов до нескольких недель, хотя я заметил, что сегодня больше нескольких часов), что означает, что запросы к базе данных работают нормально, люди могут входить в систему и т. Д. А затем, по адресу в какой-то момент просто происходит ошибка connectionString.
С этого момента наш сайт становится недоступным и продолжает возвращать эту ошибку для любой страницы, к которой мы пытаемся получить доступ.
Иногда через 10-15 минут наш сайт снова возвращается в онлайн, и работает нормально, пока ошибка не появится снова. Но в большинстве случаев мне приходится использовать один из трех следующих методов, чтобы заставить его снова работать:

1) Повторное сохранение файла Web Config без добавления / изменения чего-либо
2) Остановка и запуск сайта в IIS
3) Перезагрузка сервера

На нашем сервере тоже есть сайт разработки. Однако он никогда не выдавал мне эту случайную ошибку. Единственные различия между нашим сайтом разработки и производственным сайтом - это разные базы данных, пользователи sql и режимы аутентификации в Web Config (production = Windows, development = forms)

  • Что изменилось на нашем сервере с июля 2010 года?

Платформа .net была обновлена ​​с 3.5 до 4 в марте 2011 года.
Физический каталог сайта был перемещен из исходного каталога IIS в другой раздел на том же сервере с июня 2011 года (в основном, это просто вырезка / вставка каталога сайта и изменение физического пути приложения в IIS).
Обновления Windows Server 2008 применяются каждый раз, когда они появляются.

  • Что я пытался исправить?

1) Первым делом я снова попытался вернуть каталог нашего сайта в IIS inetpub / wwwroot. Это ничего не изменило.
2) Я попытался установить те же права доступа к каталогам на нашем рабочем сайте, что и на нашем сайте разработки. По-прежнему ничего.
3) Я сравнил два пула разработки / производства приложений, но никаких различий нет.
4) И, конечно же, я искал на многих сайтах, чтобы найти, сталкивался ли кто-нибудь когда-нибудь с этим. проблема тоже. Самая связанная с моей проблемой тема, которую я обнаружил, - это:
Web.config - свойство ConnectionString не инициализировано
Однако я не понимаю, как я могу проверить наличие «случайно применяемых разрешений в моей корневой папке».

  • Трассировка стека на главной странице при возникновении ошибки:
at System.Data.SqlClient.SqlConnection.PermissionDemand()  
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)  
at System.Data.SqlClient.SqlConnection.Open()  
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)  
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)  
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)  
at Database.listeCategories(enuTypeCategorie typeCategorie, enuOrdre ordre, enuActif actif, Boolean withFirstRow, Boolean libTous)  
at user_controls_criteresAnnonce.set_secteur(Int32 value)  
at user_controls_criteresAnnonce.initValues()  
at _default.Page_Load(Object sender, EventArgs a)  
at System.Web.UI.Control.LoadRecursive()  
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)  

Поскольку ошибка касается любой страницы, когда она появляется, источник всегда другой.

  • Системная информация:

Сайты (разработка и производство) работают на Windows Server 2008 SP2 с IIS 7.
База данных работает под SQL Server 2005.
.NET framework - 4 (версия ASP, написанная в диспетчере серверов: ASP.NET 4.0.30319.0 ).

ConnectionString хранится в файле Web Config по следующему шаблону:

<connectionStrings>
    <add name="BosstobossDbBase" connectionString="Server=server_ip; Database=database_name; User=login; password=pass" providerName="System.Data.SqlClient"/>
</connectionStrings>  

И перед любой попыткой подключения к базе данных, connectionString воздействует на объект SqlConnection, подобный этому (conn объявляется в классе):

conn = New SqlConnection()
conn.ConnectionString = ConfigurationManager.ConnectionStrings("BosstobossDbBase").ConnectionString  
conn.Open()  

Если вам нужна дополнительная информация, не стесняйтесь спрашивать меня. Я в затруднении с этим ... Любая помощь была бы с радостью принята.
Спасибо!

С уважением,
Кевин


person Kevin    schedule 18.10.2011    source источник
comment
У вас есть вызовы ConfigurationManager.ConnectionStrings (BosstobossDbBase) .ConnectionString, разбросанные по всему вашему коду? Или вы его инкапсулировали?   -  person Aheho    schedule 19.10.2011
comment
К вашему сведению, сохранение файла web.config приводит к перезапуску пула приложений. У вас проблемы с объемом памяти?   -  person Brock Hensley    schedule 20.03.2016


Ответы (2)


Я бы изменил файл web.config на это и посмотрел, поможет ли это:

 <connectionStrings> 
     <remove name="BosstobossDbBase" />
     <add name="BosstobossDbBase" connectionString="Server=server_ip; Database=database_name;User=login; password=pass" providerName="System.Data.SqlClient"/> 
 </connectionStrings> 
person Aheho    schedule 18.10.2011
comment
Спасибо. Я попробую это сделать и вернусь к вам, если проблема не исчезнет. - person Kevin; 18.10.2011
comment
Жаль, ошибка connectionString все еще происходила ночью с таким же поведением (сайт работал несколько часов, а затем он становится недоступным, пока я не воспользуюсь одним из 3 методов, описанных в моем сообщении) :( - person Kevin; 19.10.2011

Я долго сталкивался с этой проблемой. У меня было приложение на ASP.Net v2.0, которое работало нормально, и вдруг однажды я начал получать эту ошибку.

Я решил это следующим образом:

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

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

Надеюсь это поможет.

person Prateek    schedule 14.12.2011