verwendetes Datenbanksystem: XML
Hallo,
ich möchte web.configs, die immer gleich aussehen (bis auf die values) per Programm ändern.
Hierzu habe ich mich bereits stundenlang durch sämtliche Foren geklickt und alles Mögilche ausprobiert, aber es will einfach nicht hinhauen.
die Klasse die die Änderung durchführen soll sieht folgendermaßen aus:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace WindowsFormsApplication2
{
class Speicherung
{
public void save(String key, String value, String pfad)
{
try
{
// Config laden
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(pfad);
// Zeile finden, ändern und Config speichern
foreach (XmlNode xmlNode in xmlDocument.SelectNodes("/configuration/appSettings/add"))
{
if (xmlNode.Attributes["key"].Value == key)
{
xmlNode.Attributes["value"].Value = value;
break;
}
}
xmlDocument.Save(pfad);
}
catch (Exception e) { }
}
}
}
Die Web.config sieht ca. folgendermaßen aus:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings>
<add key="ipAdresseWebServer" value="XXX.XXX.XXX.XXX:XX" />
</appSettings>
</configuration>
Leider funktioniert das nicht, weil er nicht in die Foreach-Schleife reingeht sondern gleich zum speichern des Dokuments übergeht.
Habe auch schon viele andere Möglichkeiten die ich in Foren gefunden hab getestet und kriege es einfach nicht hin das value von "XXX.XXX.XXX.XXX:XX" durch das der Methode übergebene value zu ersetzen.
Weiß jmd von euch was ich falsch mache?
Vielen Dank schonmal.
Hallo,
da es sich ja um web.config-Dateien handelt, schau Dir mal den WebConfigurationManager (in System.Web.Configuration) an, der ist speziell dafür gemacht.
Ich weiß jetzt nicht 100% ob der auch in einer Nicht-Webanwendung funktioniert, vermute es aber stark.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Ich weiß jetzt nicht 100% ob der auch in einer Nicht-Webanwendung funktioniert, vermute es aber stark.
Funktioniert, wenn man nicht "Client-Profile" als TargetFrameWork in den Eigenschaften des Projektes angegeben hat. Dann kann man unter den References auch die System.Web DLL referenzieren.
Vielleich noch interessante Links zum WebConfigurationManager:
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt