Ich habe einen WCF-Dienst in IIS gehostet wird, erzeugt dieser Dienst eine XML-Datei mit dem folgenden Code:Wie durch aspnet_wp.exe Datei-Handle freizugeben
XmlSerializer serializer = new XmlSerializer(typeof(Batch));
using (TextWriter textWriter = new StreamWriter(ConfigurationManager.AppSettings["SFTPDirectoryPath"] + "\\" + bundle.Name.Replace("dat", "xml")))
{
serializer.Serialize(textWriter, batch);
textWriter.Close();
}
Nachdem die XML-Datei auf der Festplatte geschrieben wird, wenn Ich versuche, den Inhalt der Datei zu ändern ODER wenn ich versuche, die Datei zu löschen, erhalte ich die Fehlermeldung, dass die Datei von einem anderen Prozess verwendet wird, schließe alle Programme, die die Datei verwenden. Ich habe eine App namens "ofview" heruntergeladen, die anzeigt, welcher Prozess die Datei handhabt und sie schließt. Es zeigt, dass aspnet_wp die Sperre für die XML-Datei hält. Ofview ermöglicht es mir, dieses Handle zu veröffentlichen, dann kann ich die Datei ändern oder löschen.
Meine Frage ist: Wie kann ich das Handle programmgesteuert freigeben, nachdem ich die Datei in meinem Code geschrieben habe? Fehle ich etwas? Danke für Ihre Hilfe.
denke ich, das Problem in der IIS - wir Enterprise Library wurden mit Zwischenspeichern Block, und es erlitt das gleiche Problem - die Protokolldateien konnten nicht angefügt werden, und Dutzende neue Dateien wurden erstellt (wirklich frustrierend). Also sind wir zu log4net gewechselt, das dieses Problem nicht hat. Versuchen Sie, verschiedene Methoden zu untersuchen, um die Datei zu sperren - schauen Sie in den log4net-Code, wenn Sie Zeit haben ... Übrigens, welche IIS verwenden Sie? – veljkoz
Ich verwende IIS Version 5.1 –