J'ai un FileHandler.ashx
qui implémente IHttpHandler
. La seule chose que ce gestionnaire fait est d'obtenir le fichier et de le renvoyer par context.Response
.HttpHandler ne rend pas l'image sur le serveur
Cela fonctionne très bien dans mon unité locale même après l'avoir publié (sur ma machine locale). Alors que sur le serveur, cela ne fonctionne que si je lance le site Web via Visual Studio, cela ne fonctionne pas si j'accède au site Web publié (c'est-à-dire http://url.to.site/).
C'est ce qu'il ressemble lors de l'exécution sur ma machine locale (à travers Visual Studio ou site publié), et à travers Visual Studio sur la machine serveur:
Et voici à quoi il ressemble lorsque vous accédez à la site publié sur le serveur:
Ceci est un extrait de la méthode ProcessRequest
du FileHandler
:
var strExtenstion = Path.GetExtension(file);
var fileInfo = new FileInfo(file);
context.Response.Clear();
context.Response.ClearContent();
context.Response.AppendHeader("content-length", file.Length.ToString());
if (strExtenstion == ".pdf") { context.Response.ContentType = "application/pdf"; }
else if (strExtenstion == ".png") { context.Response.ContentType = "image/png"; }
else if (strExtenstion == ".jpg") { context.Response.ContentType = "image/jpeg"; }
else if (strExtenstion == ".gif") { context.Response.ContentType = "image/gif"; }
else if (strExtenstion == ".bmp") { context.Response.ContentType = "image/bmp"; }
else if (strExtenstion == ".txt") { context.Response.ContentType = "text/plain"; }
else {
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
context.Response.ContentType = "application/octet-stream";
}
context.Response.WriteFile(fileInfo.FullName);
file
est le chemin du fichier.
** MISE A JOUR **
Si cela aiderait: le serveur j'est un serveur GoDaddy qui est maintenu en utilisant Plesk.
Cette réponse était attendue depuis longtemps. XD – dunli