J'ai un service WCF hébergé dans IIS, ce service génère un fichier XML en utilisant le code suivant:Comment libérer la poignée de fichier par aspnet_wp.exe
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();
}
Une fois le fichier XML est écrit sur le disque, si J'essaye de changer le contenu du dossier OU si j'essaye de supprimer le dossier, j'obtiens le message d'erreur que le dossier est employé par un autre processus, fermez tous les programmes utilisant le dossier. J'ai téléchargé une application appelée "ofview" qui montre quel processus contient un handle sur le fichier et le verrouille. Cela montre qu'aspnet_wp détient le verrou sur le fichier XML. ofview me permet de libérer cette poignée, alors je peux changer le fichier ou le supprimer.
Ma question est: comment puis-je libérer le handle par programmation, une fois que j'ai fini d'écrire le fichier dans mon code? Est-ce que je manque quelque chose? Merci de votre aide.
Je pense que le problème est dans IIS - que nous utilisions Enterprise Library Caching block, et il a souffert du même problème - les fichiers journaux n'ont pas pu être ajoutés, et des dizaines de nouveaux fichiers ont été créés (vraiment frustrant). Nous sommes donc passés à log4net qui n'a pas ce problème. Essayez de regarder dans différentes méthodes pour verrouiller le fichier - regardez dans le code log4net si vous avez le temps ... btw, quel IIS utilisez-vous? – veljkoz
J'utilise IIS version 5.1 –