[ASP.NET 2.0] Probleme ouverture d'un fichier ...

notoriousFab Messages postés 21 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 août 2009 - 18 oct. 2007 à 15:12
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 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 ...


Merci
____________
notoriousFab

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
notoriousFab Messages postés 21 Date d'inscription jeudi 6 mars 2003 Statut Membre Derniè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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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 !

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
Rejoignez-nous