2015-11-16 6 views
2

Я пытаюсь настроить мое веб-приложение на использование файла tnsnames.ora, находящегося в папке приложения bin, но работает только при указании полного пути к папке bin.Использование относительного пути для TNS_ADMIN в web.config

Можно ли использовать относительный путь?

Я попытался следующие варианты не повезло:

<setting name="TNS_ADMIN" value="bin"/> 
<setting name="TNS_ADMIN" value="/bin"/> 
<setting name="TNS_ADMIN" value="~/bin"/> 
<setting name="TNS_ADMIN" value="\bin"/> 
<setting name="TNS_ADMIN" value="~\bin"/> 
<setting name="TNS_ADMIN" value="bin/"/> 
<setting name="TNS_ADMIN" value="bin\"/> 

ответ

1

TNS_ADMIN является также поддерживается переменная среды, которая означает, что вы могли бы сделать это с помощью кода в Application_Start вашей global.asax в:

Environment.SetEnvironmentVariable("TNS_ADMIN", Server.MapPath("~/bin")); 

Тем не менее, интересно, нужно ли вам это делать. Если у вас есть файл tnsnames, который является глобальным, вы можете просто установить TNS_ADMIN в качестве переменной системной среды, а затем все будет использовать его. Но если этот ТНС псевдонимы являются специфическими для вашего приложения, вы можете просто включить их в самой конфигурации:

<oracle.manageddataaccess.client> 
    <version number="*"> 
     <dataSources> 
     <dataSource alias="Server1" descriptor="(DESCRIPTION = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = server1-scan.company.com)(PORT = 1526)) 
      (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = server1.company.com) 
     ) 
     ) 
     " /> 
     </dataSources> 
    </version> 
    </oracle.manageddataaccess.client> 

Я не говорю, что нет ничего плохого в том, что вы делаете, но в целом TNSNAMES для централизации некоторые из конфигураций tns, где вы хотите иметь файл, который, как представляется, специфичен для вашего приложения.

+0

Ну, у нас есть ряд проектов в решении, требующих информации о соединении БД. Основная цель состояла в том, чтобы разделить строки соединений и псевдонимы TNS по этим проектам, чтобы их можно было легко изменить для всех приложений. Вот почему я не хочу использовать второй вариант (dataSources в файлах web.config). Первый вариант неприемлем, потому что у нас есть разные приложения, размещенные на одном сервере. – Bounz

+1

Я думаю, если вы пытаетесь поделиться проектами, почему вы пытаетесь сделать tns относительно проекта? Почему бы не установить tns_admin на уровне машины и иметь только одну tnsnames.ora на этой машине. Если вы хотите разделить строки подключения, вы можете поместить их на машинный уровень machine.config или web.config (то же самое касается tnsaliases, если вы не хотите использовать tns_admin. Опять же, нет правильного ответа здесь. Просто помогите исследователю ваши варианты. –

+0

Наконец, нам пришлось разместить tnsnames.ora в папке клиента \ admin на каждом сервере. Менеджер продукта из Oracle согласился с проблемой и создал ошибку (https://community.oracle.com/message/13575256#13575256). – Bounz

Смежные вопросы