Я просмотрел множество сообщений на разных форумах, где другие получали такую же ошибку. Большинство говорят, что они неправильно ссылались на строку подключения из файла web.config или пытались открыть соединение до установки строки подключения. Что ж, если это было для меня, то как это работает на двух разных системах, но не на третьей? Он работает на моем компьютере разработки и на сервере разработки, но не в производственной среде. Разница в том, что веб-сервер и сервер БД являются отдельными физическими серверами в моей производственной среде и на одном сервере для разработки. Мои настройки, сообщение об ошибке и код будут перечислены ниже.
Я могу смоделировать ошибку на своем ПК, если переименую строку подключения в любом разделе файла web.config (настройки приложения, строки подключения) на что-то другое. Ниже вы увидите, как я тестировал оба варианта.
Любая помощь будет ОЧЕНЬ признательна, потому что у меня не хватает времени, чтобы понять, почему это не сработает в производственной среде.
Ошибка сервера в приложении '/'
Свойство ConnectionString не инициализировано.
Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.
Сведения об исключении: System.InvalidOperationException: свойство ConnectionString не инициализировано.
Line 114: Line 115: Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error Line 116: ErrHandler.LogError(Server.GetLastError) Line 117: End Sub Line 118: Source File: D:\IIS\SSIP\web\App_Code\SitePage.vb Line: 116
[InvalidOperationException: The ConnectionString property has not been initialized.] System.Data.SqlClient.SqlConnection.PermissionDemand() +4876643 System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) +20 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117 System.Data.SqlClient.SqlConnection.Open() +122 Database.Open(String connectionstring) in C:\wwwroot\EIIASSIP\common\Core\Database.vb:47 Components.BasePage.get_DB() in C:\wwwroot\EIIASSIP\common\Core\BasePage.vb:41 Components.BasePage.get_ErrHandler() in C:\wwwroot\EIIASSIP\common\Core\BasePage.vb:49 Components.SitePage.Page_Error(Object sender, EventArgs e) in D:\IIS\SSIP\web\App_Code\SitePage.vb:116
'** web.config'
<appSettings>
<add key="ConnectionString" value="Persist Security Info=True;Initial Catalog=[database];Data Source=[server];User ID={0};Password={1};"/>
</appSettings>
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=[server];Initial Catalog=[database];Persist Security Info=True;User ID={0};Password={1};" providerName="System.Data.SqlClient"/>
</connectionStrings>
'** BasePage.vb'
Public ReadOnly Property DB() As Database
Get
If m_DB Is Nothing Then
'open database connection
m_DB = New Database
m_DB.Open(ConnectionString) ' ********** Line 41'
End If
Return m_DB
End Get
End Property
Public ReadOnly Property ErrHandler() As ErrorHandler
Get
If m_ErrHandler Is Nothing Then m_ErrHandler = New ErrorHandler(DB)
Return m_ErrHandler '**********Line 49'
End Get
End Property
Private Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
'if using "appSettings" section for connectionstring'
ConnectionString = DBConnectionString.GetConnectionString(ConfigurationManager.AppSettings("ConnectionString"), ConfigurationManager.AppSettings("ConnectionStringUsername"), ConfigurationManager.AppSettings("ConnectionStringPassword"))
'if using "connectionStrings" section for getting connectionstring'
'ConnectionString = DBConnectionString.GetConnectionString(ConnectionStrings.Item("ConnectionString").ConnectionString, AppSettings("ConnectionStringUsername"), AppSettings("ConnectionStringPassword"))'
End Sub
'** ConnectionStrings.vb'
Public Shared Function GetConnectionString(ByVal cs, ByVal Username, ByVal Password) As String
Dim ConnString As DBConnectionString = New DBConnectionString(cs, Username, Password)
Return ConnString.ConnectionString
End Function
'** Database.vb'
Public Sub Open(ByVal connectionstring As String)
RefCount = RefCount + 1
If con Is Nothing Then
con = New SqlConnection(connectionstring)
End If
If Not IsOpen() Then
con.Open() ' ********** Line 47'
End If
End Sub
'** SitePage.vb'
Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error
ErrHandler.LogError(Server.GetLastError) '********** Line 116'
End Sub