Ich habe eine FileHandler.ashx
, die IHttpHandler
implementiert. Das einzige, was dieser Handler macht, ist, die Datei zu bekommen und sie durch context.Response
zurückzugeben.HttpHandler rendert kein Bild auf dem Server
Es funktioniert gut in meiner lokalen Einheit auch nach der Veröffentlichung (in meinem lokalen Rechner). Während auf dem Server-Rechner funktioniert es nur, wenn ich die Website über das Visual Studio ausführen, funktioniert es nicht, wenn ich auf die veröffentlichte Website zugreifen (d. H. http://url.to.site/).
Dies ist, wie es aussieht, wenn auf meinem lokalen Rechner (durch Visual Studio oder veröffentlichte Site) und durch Visual Studio auf dem Server ausgeführt wird:
Und das ist, wie es aussieht, wenn der Zugriff auf veröffentlichte Website auf dem Server:
Dies ist ein Ausschnitt aus der ProcessRequest
Methode der 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
ist der Pfad der Datei.
** UPDATE **
Wenn dies helfen würde: der Server I verwendet wird, ist ein GoDaddy-Server, der Plesk erhalten verwendet.
Diese Antwort war lange überfällig. XD – dunli