ODP.NET Oracle.ManagedDataAccess вызывает конец файла сетевого сеанса ORA-12537

обзор

Я хочу заменить Oracle.DataAccess на Orcale.УдалосьDataAccess, но при открытии соединения с последнимКонец файла сетевого сеанса ORA-12537 исключение.

Сообщение об исключении / трассировка стека

{OracleInternal.Network.NetworkException (0x000030F9):ORA-12537: Netzwerksession: Dateiende в OracleInternal.Network.ReaderStream.Read (OB OraBuf) в OracleInternal.TTC.OraBufReader.GetDataFromNetwork () в OracleInternal.TTC.OraBufReader.Read (логическое значение bIgnoreData) в OracleInternalNal. в OracleInternal.TTC.TTCProtocolNegotiation.ReadResponse ()}

Я пытаюсь подключиться к базе данных Oracle 11g, и на моем локальном компьютере не установлен клиент.

Рабочее тестовое приложение (неуправляемое)

Использование Oracle.DataAccessработает отлично.

using System;
using Oracle.DataAccess.Client;

namespace App.Odp.Unmanaged
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            //dummy connection string. using SID 
            string connectionString = "User Id=***;password=***;Data Source=1.2.3.4:1521/sid01;";

            try
            {
                using (var conn = new OracleConnection(connectionString))
                {
                    conn.Open();
                    using (OracleCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "select * from all_users";

                        using (OracleDataReader reader =     cmd.ExecuteReader())
                        {                            
                            Console.WriteLine("VisibleFieldCount: {0}", reader.VisibleFieldCount);
                            Console.WriteLine("HiddenFieldCount: {0}", reader.HiddenFieldCount);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error:{0}", ex.Message);
            }

            Console.ReadLine();
        }
    }
}
Ссылки и зависимостиOracle.DataAccess (2.111.7.0)oci.dll (11.1.0.1)orannzsbb11.dll (11.1.0.6)oraociei11.dll (мгновенный клиент интерфейса вызова Oracle)OraOps11w.dll (2.111.7.0)Настройки проекта

Цель платформыx86
Target Framework 4.5

Неудачное тестовое приложение (управляемое)

Использование пакета nugetОфициальный Oracle ODP.NET, управляемый драйвер 12.1.21

Код идентичен приведенному выше. Только изменить:

using System;
using Oracle.ManagedDataAccess.Client;
//... rest the same as above
Ссылки и зависимости

Только:

Oracle.ManagedDataAccess (4.121.2.0)Настройки проекта

Цель платформыЛюбой процессор
Target Framework 4.5

App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <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>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <publisherPolicy apply="no" />
        <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
        <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <!--<dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=1.2.3.4)(PORT=1521))(CONNECT_DATA=(SID=sid01)))" />-->
      </dataSources>
      <settings>
        <!--<setting name="SQLNET.AUTHENTICATION_SERVICES" value="NTS"/>-->
      </settings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>

Я пробовал разные настройки (NTS, none, all) и изменил строку подключения наИдентификатор пользователя = XXX; пароль = XXX; Источник данных = MyDataSource;, но ошибка остается прежней.

ВопросыЧто может быть причинойКонец файла сетевого сеанса ORA-12537 исключение?Ссылка / зависимость отсутствует?Нужно ли что-то настраивать на сервере БД?ОБНОВИТЬ

На сервере мы получаемORA-12679: собственные службы отключены другим процессом, но необходимы ошибка в alert.log.

Похоже, что-то связано с шифрованием. Закомментирование следующих строк на серверах sqlnet.ora решает проблему.

#SQLNET.AUTHENTICATION_SERVICES=(NTS)
#SQLNET.ENCRYPTION_TYPES_SERVER = (rc4_128, rc4_256)
#SQLNET.ENCRYPTION_SERVER=REQUIRED
#ENCRYPTION_WALLET_LOCATION=
#          (SOURCE=(METHOD=FILE)(METHOD_DATA=
#                  (DIRECTORY=...\%ORACLE_SID%\wallet)))
Новый вопрос

Как настроить ManagedDataAccess, чтобы он работал с шифрованием?

Обновление 2

Кажется, теперь работает с ODP Managed Driver 12c:
https://www.nuget.org/packages/Oracle.ManagedDataAccess/

Ответы на вопрос(5)

Ваш ответ на вопрос