Ich schreibe eine kleine Klasse, um Konfiguration XML für eine In-House-Anwendung zu verwalten.Zweite Iteration von XDocument.Save() wirft "Zugriff auf Pfad verweigert"
Der folgende Code wird jedes Mal aufgerufen, wenn eine neue Liste von t geladen wird, und versucht, Daten für neues t zu serialisieren, oder, wo t bereits vorhanden ist.
Ich vermisse etwas Grundlegendes, aber ich bin mir nicht sicher, wo.
Die Ausnahme wird durch diesen Code geworfen
if (!File.Exists(Path.Combine(Environment.CurrentDirectory + "TaskData.xml")))
{
XDocument doc = new XDocument();
XElement rootElement = new XElement("ConfigData",
new XElement("Servers"),
new XElement("Paths"));
doc.Add(rootElement);
doc.Save("TaskData.xml");
}
Die spezifische Linie ist 'doc.Save ("TaskData.xml")'.
In der ersten Iteration funktioniert das einwandfrei, und der Code erstellt die Vorlagendatei.
In der zweiten Iteration, auch wenn die XML-Datei im Verzeichnis ist, gibt File.Exists 'false' zurück, und doc.Save löst die Berechtigungsausnahme aus.
Jede Hilfe wird sehr geschätzt.
Wow Ich kann nicht glauben, dass ich das nicht verstanden habe ... Ich glaube, ich kopiere und klebte von einer früheren Version, um das Problem zu lindern. Auch die Überladung, die aufgerufen wird, ist tatsächlich die Path.Combine (String []) -Signatur, ich bin überrascht, dass der Compiler eine einzelne Zeichenfolge als Argument verwendet, und implizit wird das umgewandelt. Ich hätte schwören können, dass ich instanzierte Methoden gesehen habe, die Array-Parameter ablehnen, genau diese Situation. – SurelyTheresABetterWay
@SurelyTheresABetterWay: Es ist eine 'params string []' - was in Ordnung ist. Wenn es nur 'string []' gewesen wäre, hätte es es nicht benutzt. –