Свойство ConnectionString не было инициализировано IIS 8.5 - PullRequest
0 голосов
/ 18 декабря 2018

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

Это старый сайт, размещенный на 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 строка 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 строка 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"/>

Но тогда произойдет ошибка со всеми видами.

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

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

Ответы [ 4 ]

0 голосов
/ 18 декабря 2018

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

Спасибо the_lotus и Мейсону за то, что они указали мне правильное направление.

0 голосов
/ 18 декабря 2018

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

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

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

0 голосов
/ 18 декабря 2018

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

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

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

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

0 голосов
/ 18 декабря 2018

Интересно, если 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>

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

...