mO SharemO Share

"ReasonColumn 'InvariantName' is constrained to be unique. Value 'Oracle.DataAccess.Client' is already present." - Error appeared while login in DataExchange Utility.

SYMPTOMS


An error occurred while trying to open DataExchange utility from Ginesys Head Office Launchpad. The following message appears after user tries to login into the utility.

GINESYSSchedulerService

Error occurred. ReasonColumn 'InvariantName' is constrained to be unique. Value 'Oracle.DataAccess.Client' is already present.
Stack Trace:
at GinApps.CacheManager.get_Instance()
at GinApps.Lists.Business.BusinessListConfigReader.GetListConfiguration(String listShortCode)
at DataExchange.UI.DataExchangeDashboardPresentation.BindToDomainModels()
at DataExchange.UI.DataExchangeDashboardPresentation..ctor()
at DataExchangeDashboard.UI.DataExchangeDashboard..ctor()
at DataExchangeDashboard.UI.frmDataExchange..ctor()
at DataExchangeDashboard.Program.Main()

CAUSE


Duplicate entries exist for 'Oracle.DataAccess.Client' under DBProviderFactories section in .NET Framework 4 configuration (machine.config), entries having mention as invariant="Oracle.DataAccess.Client. When the program tries to load the information of DB Providers which is mentioned in machine.config it detects the duplicate provider entries.

Config file:
machine.config

Area to look into:
DbProviderFactories section.

Expected path of machine.config

%SystemRoot%\Microsoft.NET\Framework64\%VersionNumber%\CONFIG\ directory.

As Ginesys works on .NET Framework 4.7.2, the path we need to refer is

<System Drive>\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config

RESOLUTION


  • Open the machine.config file from the path <System Drive>\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config.

  • Then find the <DbProviderFactories> section under <system.data> tag where we can see duplicate entries of “Oracle.DataAccess.Client“ with various version. Remove one entry which is older with respect to version ( 4.121.1.0 & 4.121.2.0) & keep the current version. Here we will remove the version 4.121.1.0 .

  • Then save the machine.config file & check the DataExchange Utility again.

As an example of duplicate entries shown below :

<system.data> <DbProviderFactories> <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> <add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> <add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data>

Corrected entries of <DbProviderFactories> given below

<system.data> <DbProviderFactories> <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> <add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data>

 

RELATED ARTICLE