Я унаследовал веб-сайт от друга, чтобы он принимал его, поскольку он поссорился с текущим человеком, размещающим его для него.
Это старый сайт, был размещен на 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"/>
Но тогда это ошибка со всеми видами.
Кто-нибудь может мне помочь вернуть этот сайт в онлайн, пожалуйста?
заранее спасибо
Вы добавили новую строку подключения, но с другим именем. Имя в вашем файле конфигурации должно соответствовать имени, которое ищет ваш код ("SQLClient").
<connectionStrings>
<add connectionString="you need to put something here" name="SQLClient" />
</connectionStrings>
Вы можете избавиться от MSSQL
. Возьмите connectionString из этого и поместите его в запись SQLClient. Или переименуйте из MSSQL в SQLClient и откажитесь от лишнего.
предыдущий парень, очевидно, вычеркнул свои детали, удалив всю строку, а не только детали. Использование открывает сайт.
Спасибо the_lotus и Mason за указание в правильном направлении.
Строка подключения пуста, и вы переименовали соединение из SQLClient в MSSQL.
Используйте SSMS, чтобы проверить, что <DOMAIN>\<WEBSERVERNAME> $ (имя вашего нового компьютера IIS) имеет разрешение на вход в систему и сопоставление пользователей для БД. Также проверьте подключение вашего DEV компьютера к MSSQL. В VS используйте обозреватель сервера для подключения к ПК и БД MSSQL. Получите свойства этого соединения данных. Строка подключения может выглядеть так...
Data Source=<sqlservername>;Initial Catalog=<database>;Integrated Security=True
... где <sqlservername> и <database> - это имя компьютера и базы данных без кавычек.
Интересно, если 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>
Я думаю, что если строка подключения была действительно неправильной, вы получите другую ошибку.