Bonjour à tous !
J'écris ici pour vous faire part d'un double questionnement :
- premièrement, un problème d'accès fichier pour suppression
- deuxièmement, des précisions sur la méthode Dispose() du framework
Voila, je développe un outil d'administration pour une entreprise. Sur cet outil, je donne la possibilité à l'utilisateur de créer des objets (au sens POO) contenant sémantiquement des objets Image (Bitmap plus précisément), et par conséquent, le mec peut uploader un fichier image correspondant (typiquement jpg ou gif).
Je rencontre un probleme en environnement de prod (mais pas sur ma machine de développement), à savoir:
un objet Bitmap enregistré avec la méthode Save comme ceci (code allégé, j'ai retiré tous les try catch):
Cette image créée à l'adresse strFileNameOnServer ne peut pas être supprimée immédiatement par le même utilisateur. Le serveur renvoit l'exception suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 tmpInFile = imageFileUpload.PostedFile; Bitmap imgCreated = new Bitmap(tmpInFile.InputStream); imgCreated.Save(strFileNameOnServer);
System.IO.IOException: Le processus ne peut pas accéder au fichier 'C:\salut_les_muscles.jpg', car il est en cours d'utilisation par un autre processus.
Par contre, l'image s'affiche correctement, et tout se passe bien mis à part quand on veut la supprimer.
Aléatoirement (cela peut varier de 2 min à 15 min plus tard), la suppression redevient possible.
Après plusieurs tests, j'ai noté les points suivants:
- Un autre utilisateur ne peut pas toujours supprimer le fichier que vient de créer un premier utilisateur, mais parfois un peu quand même...
- Fermer la session de l'utilisateur et revenir pour supprimer l'image fonctionne parfois.
- L'attribut windows du fichier image récemment créé sur le serveur est un petit 'a' (grand 'A' habituellement pour les fichiers windows).
Et mon deuxième questionnement concerne la méthode Dispose(), que je n'ai pas utilisée après le Save de mon objet Bitmap.
Que fait-elle réellement? Peut-elle résoudre mon problème?
(Je précise que pour tester cette méthode, je dois déranger le monsieur qui gère le serveur de préprod, actuellement en réunionsinon je l'aurais deja essayée).
Désolé pour le manque de précisions concernant ce probleme qui je le répète, n'arrive qu'en prod. Je n'ai pas accès directement aux configurations IIS là-bas (le serveur n'est même pas dans mon bâtiment...).
Je vous remercie de m'avoir lu, et le cas échéant d'avoir tenté d'essayer de subvenir à mon appel à l'aide.
Bye !
Partager