Вытаскивание StringCollection из AppSettings через менеджер конфигурации

Проблема загружает данные для управления в событии страницы Load и называет DataBind () методом. Однако кажется, что, если DataBind () метод называют, прежде чем события генерируются, вышеупомянутое исключение сгенерировано, поскольку именование управления изменилось.

решение состоит в том, чтобы изменить это на если (! IsPostback), DataBind () и затем называют DataBind () методом в конце обработчика событий. Необходимо было бы назвать его большую часть времени так или иначе в конце обработчика для влияния на изменения.

, Если это не Ваша проблема, и Вы изменяете сторону клиента средств управления с помощью JavaScript, проверяете эта статья .

, которая Это сам, ответило сообщение, поскольку я получал много ответов на моем блоге к этой проблеме и думал, что мог бы совместно использовать его далее.

5
задан Rodney Schuler 5 August 2009 в 21:12
поделиться

2 ответа

Вы должны иметь доступ к элементам в коллекции, используя этот более простой синтаксис

foreach (string s in CsDll.Properties.Settings.Default.StpInsertSearchPath)
{
    Console.WriteLine(s);
}

РЕДАКТИРОВАТЬ:

Следующий код должен помочь

ExeConfigurationFileMap map = new ExeConfigurationFileMap(); 
map.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; 
Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
ConfigurationSectionGroup appSettingsGroup = conf.GetSectionGroup("applicationSettings");
ClientSettingsSection clientSettings = (ClientSettingsSection) appSettingsGroup.Sections["CsDll.Properties.Settings"];
ConfigurationElement element = clientSettings.Settings.Get("StpInsertSearchPath");
string xml = ((SettingElement)element).Value.ValueXml.InnerXml;
XmlSerializer xs = new XmlSerializer(typeof(string[]));
string[] strings = (string[])xs.Deserialize(new XmlTextReader(xml, XmlNodeType.Element, null));
foreach (string s in strings)
{
    Console.WriteLine(s);
}

Может быть более короткий способ, но это у меня работает.

6
ответ дан 13 December 2019 в 19:32
поделиться

Строки подключения обычно находятся внутри свойства ConnectionStrings диспетчера конфигурации. Вы должны иметь возможность получить доступ гораздо проще с помощью его статического метода.

string myConnectionString = ConfigurationManager.ConnectionStrings["connectioStringName"];

Я считаю, что вам следует использовать тег «AppSettings» вместо «ApplicationSettings» в файле .config, чтобы позволить ConfigurationManager получить доступ через свойство AppSettings.

Я недостаточно знаю о том, как работает ConfigurationManager, чтобы быть уверенным, что это решит вашу проблему, но его переименование и удаление этой настраиваемой группы разделов должны позволить AppSettings работать должным образом.

Изменить Да, похоже, что свойство AppSettings ConfigurationManager обращается к разделу с именем в файле .config.

1
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

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