Je dois mettre en œuvre l'exportation GEDCOM sur mon site.Response.TransmitFile et le supprimer après la transmission
Mon code .net a créé un fichier sur le serveur lorsque l'exportation vers gedcom a été cliquée.
Ensuite, je dois le télécharger sur le client depuis le serveur, ainsi que l'utilisateur doit être demandé où enregistrer ce fichier, ce qui signifie que saveialog est nécessaire. Après le téléchargement, je veux supprimer ce fichier du serveur.
J'obtenu un code à transmettre le fichier du serveur au client:
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(Server.MapPath("~/" + FileName));
Response.End();
de cette LINK
mais je ne suis pas en mesure de supprimer le fichier après ce code comme Response.End
termine réponse si tout le code écrit après que cette ligne n'est pas exécutée.
Si je code pour supprimer le fichier avant Response.End();
, le fichier n'est pas transmis et j'obtiens une erreur.
Qu'est-ce que Response.Flush fait et que Response.End fait? peut s'il vous plaît laissez-moi savoir la différence? – Radhi
Response.Flush force toute sortie mise en mémoire tampon (s'il y en a) mais ne lance pas l'exception ThreadAbortException - la réponse est toujours en cours. Response.End vide mais renvoie une exception ThreadAbortException qui ne peut pas être arrêtée. Mettre le code de suppression dans le bloc Finally garantit qu'il s'exécutera quel que soit le résultat. – Josh
Cela ne gère pas la situation lorsque l'utilisateur clique sur Annuler dans la boîte de dialogue de téléchargement de fichier. Lorsque cela se produit, une exception HttpException est lancée avec le message "L'hôte distant a fermé la connexion." Le code d'erreur est 0x800703E3. " puis dans le bloc finally, la suppression échoue avec une exception IO - "Le processus ne peut pas accéder au fichier 'C: \ Windows \ TEMP \ tmp5CA3.tmp' car il est utilisé par un autre processus." J'ai ajouté un catch (HttpException) et appelé Response.End() dans le catch et ça a marché pour moi – Colin