Я переместил компонент нашего приложения из веб-службы в службу Windows. Он прекрасно подключается к oracle из веб-службы, но отказывается видеть имена Tns из службы Windows. Я дал полный контроль над ORAHOME dir учетной записи, под которой работает служба.
Я также проверил разрешение учетной записи службы для реестра, используя runas regedit в качестве учетной записи службы, и он может видеть подробности HKLM \ SOFTWARE \ ORACLE \ HOME0 и HKLM \ SOFTWARE \ ORACLE \ ALL_HOMES. Все ключи ORACLE_HOME указывают на один и тот же каталог.
Я могу войти в систему как сервисная учетная запись и TNSPing sid 'UAT' без проблем:
'OK (70 msec)'
Я подключил монитор процесса к процессу, и учетная запись службы (наконец, после сканирования большей части реестра) видит tnsnames.ora и даже читает его.
Вы смеетесь за своей клавиатурой? Вы можете помочь!
<code>Cause: OracleException</p>
<p>Source: System.Data.OracleClient
Message: ORA-12154: TNS:could not resolve service name
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OracleClient.OracleConnection.Open()