notoriousFab
Messages postés21Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 5 août 2009
-
18 oct. 2007 à 15:12
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
19 oct. 2007 à 14:19
Bonjour à tous ,
J'ai cree un site internet qui gère des résultats de joueurs de tennis.
Sur ce site, il faut pouvoir envoyer un mail aux responsables des joueurs avec en attachment un fichier HTML des résultats.
Jusque là, tout se passe bien, j'ai une classe d'envoi de mail et j'arrive a mettre un fichier joint sans problème.
Mon soucis provient de la création de ce fichier joint :
Pour créer ce fichier, j'utilise "GetPageContent" qui me permet d'avoir
dans uen string le résultat donné par une page ASPX affichant les
données demandées.
Ensuite, je veux ouvrir et écrire cette string dans un fichier disque et c'est la que j'ai mon problème :
La 1ere fois, tout se passe bien mais, a la seconde ouverture, j'ai un
message d'erreur m'indiquant que le fichier est inaccessible car "il
est en cours d'utilisation par un autre processus.". Or, apres avoir
verifier, il semblerait que le processus soit "aspnet_wp.exe", un
processus du framework .NET.
Voici le code d'ouverture de mon fichier :
FileStream fs = new FileStream(Server.MapPath("Fiche.htm"), FileMode.Create,FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(fs);
sw.Write(strMonMailBody);
sw.Close();
fs.Close();
J'ai essaye de changer le FileAccess, le FileMode et meme le FileShare
mais, ca ne change rien, j'ai systematiquement cette erreur ...
J'espère que quelqu'un pourra m'aider ou au moins m'indiquer une direction où chercher ...
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 19 oct. 2007 à 11:13
bonjour,
je comprend pas tout ce que tu essaies de faire ... mais utilise le mot clé using qui va faire le dispose automatiquement
using FileStream fs = new ... {
}
Sinon, le problème est peut etre au niveau du multithreading d'asp.net ... comme c'est fait j'ai l'impression que plusieurs thread peuvent executer ton code en meme temps. Faudrais rajouter un lock (et donc tuer "un peu" les perfs :p)
notoriousFab
Messages postés21Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 5 août 2009 19 oct. 2007 à 12:31
Bonjour,
Ok, c'était peut-ê pas super clair.
Je dois envoyer un mail, via un site de gestion de rencontres de joueur, les stats des matches des joueurs à leurs entraineurs via un fichier joint. Pour ce faire, je crée mon fichier sur le serveur à l'aide d'un "GetPageContent" sur une page ASPX qui me crée ces stat.
Mon soucis est que , si je tente d'envoyer les stats de 2 joueurs différents, pour le second, j'ai cette erreur.
Depuis hier , j'ai tenté de faire le dispose mais ca ne change rien.
En fait, il semblerait que "aspnet_wp.exe" tienne le fichier pendant un certain temps après le close.
J'ai aussi essayé de kill le process mais la, ca me fait planter tout mon site.
J'ai donc fait un workaround, je crée un fichier par joueur que je nettoie de temps en temps de manière a laisser le temps au process de se couper. ET oui, c'est peut-être du au multithreading mais la en l'occurence, il n'y avait que moi qui le testait.
J'y regarderai plus tard quand j'aurai plus de temps.
Je sais c'est pas super propre, j'aurai aimé comprendre mais mon client attendait ^^
Merci quand même pour les pistes
____________
notoriousFab
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 19 oct. 2007 à 14:19
Euh, pourquoi ne pas envoyer le mail directement ? plutot que d'écrire sur le disque ? en tout cas écrire sur le disque avec un nom unique sans lock est une mauvaise idée !