Я использую ту же 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()
Если вам нужна дополнительная информация, не стесняйтесь спрашивать меня. Я в затруднении с этим ... Любая помощь была бы с радостью принята.
Спасибо!
С уважением,
Кевин