Следует отметить, что <clear />
очистит все DbProviderFactories
, что вы, возможно, не захотите делать, в зависимости от вашей ситуации.
Вы также можете просто удалить этот класс прямо перед его повторным добавлением, добавив следующую строку:
<remove invariant="Oracle.ManagedDataAccess.Client" />
Вот как будет выглядеть все <system.data>
:
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<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" />
</DbProviderFactories>
</system.data>
Это может быть полезно, если ваша локальная машина и серверная среда не имеют совпадающих файлов конфигурации, таких как machine.config.
Другая вещь, которую вы можете сделать, это просто удалить ее из вашего web.config, при условии, что настройка в вашем machine.config будет работать. Однако я бы протестировал это как на вашей машине разработки, так и на ваших серверах. В моем случае это работало на одном, но не на другом, потому что файлы machine.config не совпадали. Для решения этой проблемы я добавил этот же параметр в файл machine.config на сервере без <remove invariant="Oracle.ManagedDataAccess.Client" />
, например, так:
<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" />
</DbProviderFactories>
</system.data>