I'm writing a custom module that makes a single call to an Oracle database and then stores the values in the DNN SQL database. The SQL code works fine, but when I try to use DataProvider.Instance() to create a call to the Oracle database, it fails because it cannot read the web.config section I have specified. I've tried to correct this for about a week without success. Below are chunks of the web.config and code files. Please advise!
web.config:
========================================================================
<configSections>
<sectionGroup name="dotnetnuke">
...
<section name="oracledata" requirePermission="false" type="DotNetNuke.Framework.Providers.ProviderConfigurationHandler, DotNetNuke"/>
</sectionGroup>
<connectionStrings>
<add name="OracleServer" connectionString="..." providerName="System.Data.OracleClient" />
</connectionStrings>
<dotnetnuke>
...
<oracledata defaultProvider="OracleProvider">
<providers>
<clear />
<add name="OracleProvider" connectionStringName="OracleServer" />
</providers>
</oracledata>
========================================================================
DataProvider.vb:
==============================================
Namespace MyModule.Data
Public MustInherit Class DataProvider
Private Shared objProvider As DataProvider = Nothing
Shared Sub New()
CreateProvider()
End Sub
Private Shared Sub CreateProvider()
Dim myObj As Object = CreateObject("cleodata", "WebConfig.Data", "WebConfig.Data", False)
If Not myObj Is Nothing Then
objProvider = CType(myObj, DataProvider)
Else
objProvider = CType(DotNetNuke.Framework.Reflection.CreateObject("oracledata", "MyModule.Data", "MyModule.Data"), DataProvider)
End If
End Sub
Public Shared Shadows Function Instance() As DataProvider
Return objProvider
End Function
Public MustOverride Function GetConnectionString(ByVal portalId As Integer) As String
End Class
====================================================================
OracleDataProvider.vb:
====================================================
Public Class OracleDataProvider
Inherits DataProvider
#Region "Private Members"
Private Const ProviderType As String = "oracledata"
Private m_ProviderConfiguration As Framework.Providers.ProviderConfiguration = Framework.Providers.ProviderConfiguration.GetProviderConfiguration(ProviderType)
Private m_ConnectionString As String
#End Region
#Region "Public Properties"
Public ReadOnly Property ConnectionString() As String
Get
Return m_ConnectionString
End Get
End Property
#End Region
#Region "Constructors"
Public Sub New()
' Read the configuration specific information for this provider
Dim objProvider As Framework.Providers.Provider = CType(m_ProviderConfiguration.Providers(m_ProviderConfiguration.DefaultProvider), Framework.Providers.Provider)
' Read the attributes for this provider
m_ConnectionString = Config.GetConnectionString(objProvider.Attributes("connectionStringName").ToString())
End Sub
#End Region
Public Overrides Function GetConnectionString(ByVal portalId As Integer) As String
Return "Connection Portal: " & portalId & " connStr: " & m_ConnectionString
End Function
End Class