2017-06-21 3 views
0

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: enter image description here

Und das ist, wie es aussieht, wenn der Zugriff auf veröffentlichte Website auf dem Server: enter image description here

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.

Antwort

0

fand ich die Antwort aus: ich die falsche Variable in dieser Zeile verwendet:

context.Response.AppendHeader("content-length", file.Length.ToString()); 

file.Length.ToString() sollte fileInfo.Length.ToString() waren, aber dieser Code sollte durch VS nicht gearbeitet haben, als laufen, seltsam.

+0

Diese Antwort war lange überfällig. XD – dunli