Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение параметров конфигурации, Получение параметров конфигурации 
V
    Опции темы
Alekz
Дата 5.6.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



Всем привет.

У приложения примерно такой конфигурационный файл:

Код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <channels>
        <channel
          ref="tcp" 
          port="6000"
          bindTo="192.168.2.9" />
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>


Задача - получить в коде параметр "bindTo".

Дошел до:
Код

 ConfigurationSection cs = ConfigurationManager.GetSection("system.runtime.remoting") as ConfigurationSection;

При этом cs реально имеет тип IgnoreSection, а коллекция cs.ElementInformation.Properties - пустая...

Буду благодарен за помощь!

PM MAIL   Вверх
wester
Дата 5.6.2009, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 4
Всего: 13



набросал код , cильно не критикуйте , я только учусь smile

Код

using System;
using System.Xml;
class test
{
    static void Main()
    {
        
        XmlTextReader reader = new XmlTextReader(@"c:\a.xml"); // загружаем файлик
        
        reader.XmlResolver = null;
        string param = null; // записываем адрес        
        reader.WhitespaceHandling = WhitespaceHandling.None;        
        reader.MoveToContent();
        if (reader.Name != null)
        {
            while (reader.Read()) // читаем файл
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    
                    if (reader.HasAttributes)
                    {                        
                        reader.MoveToAttribute("bindTo"); // переходим к атрибуту с именем "bindTo"                        
                        param = reader.Value.ToString();    // параметр         
                    }
                }
            }
        }
        Console.WriteLine(param);
        Console.ReadLine();
    }
    
}


Это сообщение отредактировал(а) wester - 6.6.2009, 14:16
PM MAIL   Вверх
Alekz
Дата 9.6.2009, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



wester, спасибо за помощь, но это не совсем то...
Сейчас я как раз так примерно и делаю (только через XmlDocument)

Но противный внутренний голос говорит мне что правильнее было бы через System.Configuration...
PM MAIL   Вверх
Conkistador
Дата 9.6.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 3.6.2009

Репутация: 2
Всего: 2



Цитата(Alekz @ 9.6.2009,  10:18)
wester, спасибо за помощь, но это не совсем то...
Сейчас я как раз так примерно и делаю (только через XmlDocument)

Но противный внутренний голос говорит мне что правильнее было бы через System.Configuration...

Тоесть ты хочешь добраться до этой секции используя средства чтения конфигурационного файла ? 
я сталкивался с такой задачей и в результате оказалось в разы проще прочитать либо просто как XML (что ты уже и сделал) либо получить необходимый параметр из настроек remouting'а.

например вот так я получил порт на котором запущен сервер 
Код

 RemotingConfiguration.Configure(@"MyProg.exe.config",false);

// Получаем порт на котором запущен сервер
IChannel[] myIChannelArray = ChannelServices.RegisteredChannels;
frmTest test = new frmTest();
test.Text = ((ChannelDataStore)((TcpChannel) myIChannelArray[0]).ChannelData).ChannelUris[0];




Это сообщение отредактировал(а) Conkistador - 9.6.2009, 12:01
PM MAIL WWW   Вверх
Alekz
Дата 9.6.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



Conkistador, для ремоутинга действительно это проще. Спасибо.

В моем случае устраивает любой из вариантов, поэтому тему можно считать закрытой.
Может под настроение попробую все таки сделать все через конфигурацию ))

ЗЫ
Кто прочтет, поставте Conkistador +1, а то у меня постов не хватает)

Это сообщение отредактировал(а) Alekz - 9.6.2009, 16:15
PM MAIL   Вверх
PashaPash
Дата 9.6.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Alekz, секция ремоутинга приниципиально объявлена как IgnoreSection в machine.config, вряд ли до нее можно добраться через конфигурацию. И сам ремоутинг использует ручную загрузку файла при конфигурировании.
+1 done.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.