app.config vs machine.config
От: Andy77 Ниоткуда  
Дата: 16.03.10 16:10
Оценка:
Существует ли какой-то способ указать системе конфигурации, что она должна игнорировать определенные секции в machine.config? Мы разворачиваем приложение с Oracle Instant Client (x-copy deployment) и напоролись на проблему — приложение падает (ошибка инициализации системы конфигурации) в случае, если полный OracleClient был установлен на машину до этого и в app.config приложения существует секция "sectionGrop" (см. ниже); если же эту секцию убрать, то получаем обратную проблему — приложение запускается на этих машинах, но падает на тех, где OracleClient не был установлен. Здесь эту проблему рекомендуют лечить редактированием machine.config, но мы не можем этого делать на машинах пользователей.

P.S. Конкретно эту проблему, похоже, можно обойти "виртуализацией" ветки регистра, куда смотрит Оракл для определения значений SeltTuning и MaxStatementCacheSize, но это тоже грязно и некрасиво.

<configuration>
  <configSections>
    <sectionGroup name="oracle.dataaccess.client" type="Oracle.DataAccess.Client.OracleSectionGroup, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342">
      <section name="settings" type="Oracle.DataAccess.Client.SettingsSection, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </sectionGroup>
  </configSections>

  <oracle.dataaccess.client>
    <settings>
      <add name="SelfTuning" value="0"/>
      <add name="MaxStatementCacheSize" value="10"/>
    </settings>
  </oracle.dataaccess.client>
Re: app.config vs machine.config
От: Andy77 Ниоткуда  
Дата: 16.03.10 17:00
Оценка:
Забыл написать про исключения — в первом случае (без cуществующего OracleClient) получаем ConfigurationsErrorException с жалобой на неопознанную секцию oracle.dataaccess.client, во втором — на продублированную секцию: "Section or group name 'oracle.dataaccess.client' is already defined. Updates to this may only occur at the configuration level where it is defined. "
Re: app.config vs machine.config
От: vmpire Россия  
Дата: 25.03.10 13:19
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Существует ли какой-то способ указать системе конфигурации, что она должна игнорировать определенные секции в machine.config? Мы разворачиваем приложение с Oracle Instant Client (x-copy deployment) и напоролись на проблему — приложение падает (ошибка инициализации системы конфигурации) в случае, если полный OracleClient был установлен на машину до этого и в app.config приложения существует секция "sectionGrop" (см. ниже); если же эту секцию убрать, то получаем обратную проблему — приложение запускается на этих машинах, но падает на тех, где OracleClient не был установлен. Здесь эту проблему рекомендуют лечить редактированием machine.config, но мы не можем этого делать на машинах пользователей.


A>P.S. Конкретно эту проблему, похоже, можно обойти "виртуализацией" ветки регистра, куда смотрит Оракл для определения значений SeltTuning и MaxStatementCacheSize, но это тоже грязно и некрасиво.


A>
A><configuration>
A>  <configSections>
A>    <sectionGroup name="oracle.dataaccess.client" type="Oracle.DataAccess.Client.OracleSectionGroup, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342">
A>      <section name="settings" type="Oracle.DataAccess.Client.SettingsSection, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
A>    </sectionGroup>
A>  </configSections>

A>  <oracle.dataaccess.client>
A>    <settings>
A>      <add name="SelfTuning" value="0"/>
A>      <add name="MaxStatementCacheSize" value="10"/>
A>    </settings>
A>  </oracle.dataaccess.client>
A>


Поместите в начале <configSections> секцию <remove />

<configSections>
<remove name="oracle.dataaccess.client" />
</configSections>

Потом, если нужно, можно добавить нужную Вам секцию:
<configSections>
<remove name="oracle.dataaccess.client" />
<sectionGroup name="oracle.dataaccess.client" type="...">
<section name="settings" type="..." />
</sectionGroup>
</configSections>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.