0

Je suis le débogage d'un site Web ASP.NET qui a beaucoup de javascripts et d'images utilisant le serveur Web de développement Visual Studio 2008.VS serveur Web intégré envoie des images en tant que flux d'octets

L'un des nombreux scripts essaie de créer une balise <img> à la volée et de lui fournir un attribut src approprié. Cependant, aucune des images n'est chargée et le texte alt à la place est affiché dans Firefox, IE et Opera.

Creuser plus loin, je copié un des liens d'image, puis le coller dans la barre d'adresse de Firefox, ce qui est ce qui arrive dans la fenêtre en-têtes en direct:

GET /images/nav/zoomin.png HTTP/1.1 
Host: localhost:7777 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729) 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 

HTTP/1.x 200 OK 
Server: ASP.NET Development Server/9.0.0.0 
Date: Wed, 25 Feb 2009 16:59:23 GMT 
X-AspNet-Version: 2.0.50727 
Cache-Control: private 
Content-Type: application/octet-stream 
Content-Length: 292 
Connection: Close 

La partie problématique est l'en-tête Content-Type qui est en quelque sorte mis à "application/octet-stream" forçant une opération de téléchargement au lieu de s'afficher normalement à l'intérieur de la balise <img>.

Je suis sûr que ce n'est pas le javascript qui est le problème, parce que c'est le code qui a été copié textuellement d'une autre application qui a bien fonctionné. Je crois que j'ai peut-être mal configuré quelque chose quelque part. Mais je peux me tromper, alors voici le code qui crée la balise HTML:

var zin = document.createElement("img"); 
zin = $Img.Png(zin, Settings.ImageHost + "zoomin.png"); 
zin.style.top = (this.y + zoomPaddingY) + "px"; 
zin.style.left = (this.x + zoomPaddingX) + "px"; 
zin.style.position = "absolute"; 
$Img.Swap(zin, Settings.ImageHost + "zoomin.png", Settings.ImageHost + "zoomin_active.png"); 
zin.alt = zin.title = "zoom in"; 
zin.style.cursor = this.hand; 
$Evt.addListener(zin, "click", this.zoomIn, this, true); 

// long long scroll ... 

controlDiv.appendChild(zin); 

La partie $Img.Png fonctionne bien pour d'autres images PNG, donc il ne devrait pas être la source du problème.

Qu'est-ce que j'ai mal fait?!?

Merci pour toute aide!

Il est déjà minuit ici ... et je travaille encore sur cette petite application ...

Répondre

1

Utilisez-vous un GenericHandler qui rend l'image?

Cela semblerait être un choix facile à faire.

Par exemple.

public class RenderImage : IHttpHandler, IReadOnlySessionState 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
    context.Response.ContentType = "image/png"; 
    context.Response.Clear(); 

    // TODO: Write image data 
    Bitmap bitmap = ... 

    bitmap.Save(Response.OutputStream,ImageFormat.Png); 

    context.Response.End(); 
    } 

    public bool IsReusable { get { return false; } } 
} 
Questions connexes