ConnectionString 属性 尚未初始化 IIS 8.5
The ConnectionString property has not been initialized IIS 8.5
我从一个朋友那里继承了一个网站来托管,因为他和现在为他托管的人不和。
它是一个旧站点,从外观上看托管是 IIS7,我无法在线访问它。
我在带 IIS 的服务器 2012r2 机器上
基本上这是我得到的错误:
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"/>
然后各种错误。
谁能帮我把这个网站恢复在线?
提前致谢
我想知道 ConfigurationManager.ConnectionStrings.Item("SQLClient").ConnectionString 是否真的 returns 了。通过查看您的代码,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>
我认为如果连接字符串实际上是错误的,你会得到一个不同的错误。
您添加了新的连接字符串,但名称不同。配置文件中的名称必须与您的代码正在查找的名称匹配 ("SQLClient")。
<connectionStrings>
<add connectionString="you need to put something here" name="SQLClient" />
</connectionStrings>
你可以去掉MSSQL
。从中获取 connectionString 并将其放入 SQLClient 条目中。或者从 MSSQL 重命名为 SQLClient 并放弃多余的内容。
您的连接字符串为空,您将连接从 SQLClient 重命名为 MSSQL。
使用 SSMS 检查 \$(您的新 IIS 计算机名称)是否具有登录权限和数据库的用户映射。还要测试从 DEV PC 到 MSSQL 的连接。在 VS 中,使用 Server Explorer 连接到 MSSQL PC 和 DB。获取该数据连接的属性。连接字符串看起来像...
Data Source=<sqlservername>;Initial Catalog=<database>;Integrated Security=True
...其中 和 是不带引号的 PC 和数据库的名称。
前一个人显然通过删除整行而不是细节来删除他的细节。使用可启动网站。
感谢 the_lotus 和 Mason 为我指明了正确的方向。
我从一个朋友那里继承了一个网站来托管,因为他和现在为他托管的人不和。
它是一个旧站点,从外观上看托管是 IIS7,我无法在线访问它。
我在带 IIS 的服务器 2012r2 机器上
基本上这是我得到的错误:
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"/>
然后各种错误。
谁能帮我把这个网站恢复在线?
提前致谢
我想知道 ConfigurationManager.ConnectionStrings.Item("SQLClient").ConnectionString 是否真的 returns 了。通过查看您的代码,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>
我认为如果连接字符串实际上是错误的,你会得到一个不同的错误。
您添加了新的连接字符串,但名称不同。配置文件中的名称必须与您的代码正在查找的名称匹配 ("SQLClient")。
<connectionStrings>
<add connectionString="you need to put something here" name="SQLClient" />
</connectionStrings>
你可以去掉MSSQL
。从中获取 connectionString 并将其放入 SQLClient 条目中。或者从 MSSQL 重命名为 SQLClient 并放弃多余的内容。
您的连接字符串为空,您将连接从 SQLClient 重命名为 MSSQL。
使用 SSMS 检查
Data Source=<sqlservername>;Initial Catalog=<database>;Integrated Security=True
...其中
前一个人显然通过删除整行而不是细节来删除他的细节。使用可启动网站。
感谢 the_lotus 和 Mason 为我指明了正确的方向。