Случайная ошибка 500 «Свойство ConnectionString не было инициализировано» - PullRequest
4 голосов
/ 18 октября 2011

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

  • Как происходит ошибка?

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

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

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

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

.net Framework был обновлен с 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 с пакетом обновления 2 (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()  

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

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

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

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

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

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

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

0 голосов
/ 18 октября 2011

Я бы изменил файл 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> 
...