Конфигурационные файлы C#

Этот вопрос довольно старый, но я хотел бы поделиться тем, что сработало для меня. Надеюсь, что это будет полезно для людей, которые ищут некоторую информацию, получающую доступ к свойствам во внешнем местоположении.

Это то, что сработало для меня.

  1. Содержимое файла свойств:

    PROVIDER_URL=t3://localhost:8003,localhost:8004
    
  2. applicationContext.xml содержимое файла: (Spring 3.2.3)

    Примечание: ${user.home} является системным свойством ОС.

    <context:property-placeholder system-properties-mode="OVERRIDE" location="file:${user.home}/myapp/latest/bin/my-env.properties"/>
    
    <bean id="appsclusterJndiTemplate" class="org.springframework.jndi.JndiTemplate">
        <property name="environment">
            <props>
                <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
                <prop key="java.naming.provider.url">${PROVIDER_URL}</prop>
            </props>
        </property>
    </bean>
    

${PROVIDER_URL} заменено значением в свойствах файла

5
задан Community 23 May 2017 в 11:59
поделиться

4 ответа

Ну, я понял это сам после отладки в течение почти 5 часов, Черт!

Проблема была в том, что когда я использовал OpenFileDialog для получения пути к файлу, он менял текущий каталог на тот который выбран в диалоговом окне, поэтому программа не смогла найти файл конфигурации. Все, что я сделал, - это установил для свойства RestoreDirectory OpenFileDialog значение true, и poof это сработало

Спасибо всем, ChrisF, Eoin Campbell и pablito.

5
ответ дан 14 December 2019 в 08:59
поделиться

Вы получаете доступ к файлу по его полному пути или только по имени файла?

Если последнее, то это будет работают, когда файл находится в той же папке, что и исполняемый файл, но не иначе.

ОБНОВЛЕНИЕ

Похоже, что все сложнее, чем я думал вначале, и это не похоже на проблему - см. Комментарии. Строка, вызывающая исключение:

externalConfig.AppSettings.Settings["ServerAddress"].Value = serverAddr;

Это означает, что где-то в цепочке есть пустая ссылка.

2
ответ дан 14 December 2019 в 08:59
поделиться

Какой код вы используете, чтобы получить имя файла и путь обратно из OpenFileDialog.

Это полный путь к файл?

например

openFileDialog1.FileName; //Contains "C:\\Path\\To\\The\\File.txt"

Судя по всему, сохраняется только имя файла, поэтому ваше приложение просматривает только текущий путь.

0
ответ дан 14 December 2019 в 08:59
поделиться

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

0
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: