Свойство ConnectionString не было инициализировано IIS 8.5

2

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

Это старый сайт, был размещен на IIS7, и я не могу получить его онлайн.

Я на сервере 2012r2 коробка с IIS

В основном это ошибка, которую я получаю:

The ConnectionString property has not been initialized.

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.InvalidOperationException: The ConnectionString property has not been initialized.

Source Error:

Line 95: 
Line 96:             conOleDbConnection = New SqlConnection(ConfigurationManager.ConnectionStrings.Item("SQLClient").ConnectionString)
Line 97:             conOleDbConnection.Open()
Line 98: 
Line 99:             dadOleDbDataAdapter = New SqlDataAdapter(strSQL, conOleDbConnection)


Source File: C:\inetpub\wwwroot\abc\App_Code\SqlClient.vb    Line: 97

Stack Trace:

[InvalidOperationException: The ConnectionString property has not been initialized.]
   System.Data.SqlClient.SqlConnection.PermissionDemand() +7116997
   System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +30
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource'1 retry, DbConnectionOptions userOptions) +312
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource'1 retry) +202
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource'1 retry) +413
   System.Data.SqlClient.SqlConnection.Open() +128
   BBS.SqlClient.DataHandler.GetDataTable(String strSQL) in C:\inetpub\wwwroot\abc\App_Code\SqlClient.vb:97
   BBS.SqlClient.DataHandler.GetDataRow(String strSQL) in C:\inetpub\wwwroot\abc\App_Code\SqlClient.vb:128
   BBS.Sql.AbstractEntity.LoadObjectByCol(String strColumnName, String strColumnValue) in C:\inetpub\wwwroot\abc\App_Code\AbstractEntity.vb:216
   _Default.Bind(String strWebPageURL) in C:\inetpub\wwwroot\abc\Default.aspx.vb:9
   _Default.Page_Load(Object s, EventArgs e) in C:\inetpub\wwwroot\abc\Default.aspx.vb:30
   System.Web.UI.Control.OnLoad(EventArgs e) +106
   System.Web.UI.Control.LoadRecursive() +68
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3785

Итак, вот соответствующие разделы файлов трассировки стека:

SQLCLIENT.VB line 97

Public Shared Function GetDataTable(ByVal strSQL As String) As DataTable
Dim conOleDbConnection As SqlConnection
Dim dadOleDbDataAdapter As SqlDataAdapter
Dim dstDataSet As New DataSet

conOleDbConnection = New SqlConnection(ConfigurationManager.ConnectionStrings.Item("SQLClient").ConnectionString)
conOleDbConnection.Open()

dadOleDbDataAdapter = New SqlDataAdapter(strSQL, conOleDbConnection)
dadOleDbDataAdapter.Fill(dstDataSet, "Data")

conOleDbConnection.Close()
conOleDbConnection = Nothing

Return dstDataSet.Tables("Data")
End Function

SQLCLIENT.VB Line 128

Public Shared Function GetDataRow(ByVal strSQL As String) As DataRow
Dim dtblGetDataRow As DataTable = GetDataTable(strSQL)

If dtblGetDataRow.Rows.Count = 1 Then Return dtblGetDataRow.Rows(0) Else Return Nothing
End Function

Вот строка подключения от web.config была предоставлена

<connectionStrings>
<add connectionString="" name="SQLClient" />
</connectionStrings>

поместил базу данных на сервер MSSQL

попробуйте добавить в новую строку подключения:

<add name="MSSQL" connectionString="Data Source=abc;Initial Catalog=def Name;User id=geh;Password=ijk;Persist Security Info=true;Pooling=true" providerName="System.Data.SqlClient"/>

Но тогда это ошибка со всеми видами.

Кто-нибудь может мне помочь вернуть этот сайт в онлайн, пожалуйста?

заранее спасибо

  • 0
    Вы используете Persist Security Info = true, что означает, что он использует учетные данные Windows, поэтому вам не нужны имя пользователя и пароль. Начните с проверки работоспособности базы данных с помощью SQL Server Management, который поставляется вместе с SQL Server, и посмотрите, сможете ли вы войти в систему. Тогда экземпляр сервера в окне входа в систему SSMS должен быть таким же в строке подключения.
  • 0
    Получая постоянную информацию о безопасности, просто выдает ошибку в строке 96 вместо 97. Я могу войти в экземпляр с помощью кредитов и посмотреть базу данных, так что все в порядке, веб-сайт тоже не подключается. Если я вынимаю строку подключения mssql и использую строку sqlclient, как указано, это все равно вызывает ошибку в строке 96.
Показать ещё 3 комментария
Теги:
iis
connection-string

4 ответа

0
Лучший ответ

Вы добавили новую строку подключения, но с другим именем. Имя в вашем файле конфигурации должно соответствовать имени, которое ищет ваш код ("SQLClient").

<connectionStrings>
  <add connectionString="you need to put something here" name="SQLClient" />
</connectionStrings>

Вы можете избавиться от MSSQL. Возьмите connectionString из этого и поместите его в запись SQLClient. Или переименуйте из MSSQL в SQLClient и откажитесь от лишнего.

0

предыдущий парень, очевидно, вычеркнул свои детали, удалив всю строку, а не только детали. Использование открывает сайт.

Спасибо the_lotus и Mason за указание в правильном направлении.

0

Строка подключения пуста, и вы переименовали соединение из SQLClient в MSSQL.

Используйте SSMS, чтобы проверить, что <DOMAIN>\<WEBSERVERNAME> $ (имя вашего нового компьютера IIS) имеет разрешение на вход в систему и сопоставление пользователей для БД. Также проверьте подключение вашего DEV компьютера к MSSQL. В VS используйте обозреватель сервера для подключения к ПК и БД MSSQL. Получите свойства этого соединения данных. Строка подключения может выглядеть так...

Data Source=<sqlservername>;Initial Catalog=<database>;Integrated Security=True

... где <sqlservername> и <database> - это имя компьютера и базы данных без кавычек.

0

Интересно, если ConfigurationManager.ConnectionStrings.Item("SQLClient"). ConnectionString действительно что-то возвращает. Глядя на ваш код, SQLClient не имеет много в нем. Это должно выглядеть примерно так.

<connectionStrings>
<add name="SQLClient" connectionString="Data Source=abc;Initial Catalog=def Name;User id=geh;Password=ijk;Persist Security Info=true;Pooling=true" />
</connectionStrings>

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

  • 0
    the_lotus - спасибо. предыдущий парень, очевидно, вычеркнул свои детали, удалив всю строку, а не только детали. Использование <add name = "SQLClient" connectionString = "Источник данных = abc; Начальный каталог = def; Идентификатор пользователя = ghi; Пароль = jki; Пул = true" providerName = "System.Data.SqlClient" /> запускает сайт. БЛАГОДАРЮ ВАС

Ещё вопросы

Сообщество Overcoder
Наверх
Меню