Aug132010

C# ile .NET Config dosyasına bilgi yazmak-okumak / Writing to Your .NET Application's Config File

Published by admin at 11:38 PM under

Genelde web.config veya app.config dosyaları sadece bilgi okuma amaçlı kullanılır. Ama eğer isterseniz onun içine müdahale edip

programınızla ilgili ayarları runtime da içine yazabilirsiniz. Bununla ilgili internette bir çok örnek vardır ama framework 2.0 ve 3.5 arasında bazı farklılıklar olduğundan

2.0 kodları 3.5 da çalışmamaktadır.

Benim size vereceğim framework 3.5 ta çalışan bir örnektir. Örneğim aşağıdaki siteden alıntıdır.

kaynak : http://ryanfarley.com/blog/blog/archive/2004/07/13/879.aspx

 


using System;
using System.Xml;
using System.Configuration;
using System.Reflection;
//...


public class ConfigSettings
{
private ConfigSettings() {}

public static string ReadSetting(string key)
{
return ConfigurationSettings.AppSettings[key];
}

public static void WriteSetting(string key, string value)
{
// load config document for current assembly
XmlDocument doc = loadConfigDocument();

// retrieve appSettings node
XmlNode node = doc.SelectSingleNode("//appSettings");

if (node == null)
throw new InvalidOperationException("appSettings section not found in config file.");

try
{
// select the 'add' element that contains the key
XmlElement elem = (XmlElement)node.SelectSingleNode(string.Format("//add[@key='{0}']", key));

if (elem != null)
{
// add value for key
elem.SetAttribute("value", value);
}
else
{
// key was not found so create the 'add' element
// and set it's key/value attributes
elem = doc.CreateElement("add");
elem.SetAttribute("key", key);
elem.SetAttribute("value", value);
node.AppendChild(elem);
}
doc.Save(getConfigFilePath());
}
catch
{
throw;
}
}

public static void RemoveSetting(string key)
{
// load config document for current assembly
XmlDocument doc = loadConfigDocument();

// retrieve appSettings node
XmlNode node = doc.SelectSingleNode("//appSettings");

try
{
if (node == null)
throw new InvalidOperationException("appSettings section not found in config file.");
else
{
// remove 'add' element with coresponding key
node.RemoveChild(node.SelectSingleNode(string.Format("//add[@key='{0}']", key)));
doc.Save(getConfigFilePath());
}
}
catch (NullReferenceException e)
{
throw new Exception(string.Format("The key {0} does not exist.", key), e);
}
}

private static XmlDocument loadConfigDocument()
{
XmlDocument doc = null;
try
{
doc = new XmlDocument();
doc.Load(getConfigFilePath());
return doc;
}
catch (System.IO.FileNotFoundException e)
{
throw new Exception("No configuration file found.", e);
}
}

private static string getConfigFilePath()
{
return Assembly.GetExecutingAssembly().Location + ".config";
}


kullanımı

// read the Test1 value from the config file
string test1 = ConfigSettings.ReadSetting("Test1");

// write a new value for the Test1 setting
ConfigSettings.WriteSetting("Test1", "This is my new value");


// remove the Test1 setting from the config file
ConfigSettings.RemoveSetting("Test1");


[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tags:

E-mail | Permalink | Trackback | Post RSSRSS comment feed 0 Responses