124 messaggi dal 12 febbraio 2007
Ciao a tutti ho la necessita di visualizzare tramite un handler (ashx) dei file .ico

Ho realizzato l'handler e funziona tutto correttamente tranna in safari che non mi visualizza l'icona....

il codice dell'handler sotto
qualche suggerimento ?
Grazie a tutti per le gentili risposte.



   public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/x-icon";
         
            string name = context.Request["Name"].ToString();
           

          
            using (SqlConnection cn = new SqlConnection(myConnection.getStringaConnessione))
            {
                SqlCommand cmd = new SqlCommand("Select icona from myicons with (nolock) where Nome='" + Name + "'", cn);

                cn.Open();
                byte[] objData = (byte[])cmd.ExecuteScalar();
                cn.Close();

               

                using (System.IO.MemoryStream str = new System.IO.MemoryStream(objData.ToArray(), true))
                {
                    
                    str.Write(objData.ToArray(), 0, objData.ToArray().Length);
                    Byte[] bytes = str.ToArray();

  
        context.Response.AddHeader("Content-Disposition", "inline;Filename=\"" + Name + ".ico\"");
                    context.Response.AddHeader("Content-Length", objData.Length.ToString());
                    context.Response.BinaryWrite(bytes);
                   
                }
            }
        }

// richiamato poi con 
<asp:Image ID="Image1" runat="server" ImageUrl="test.ashx?name=Archsupp" BorderColor="Red" BorderWidth="1" />
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

FranzIt ha scritto:

Ho realizzato l'handler e funziona tutto correttamente tranna in safari che non mi visualizza l'icona....

Ok, cerchiamo subito di escludere Safari dalla lista dei possibili problemi. Salva una delle tue icone come file .ico, e poi metti questo nella tua pagina aspx.
<asp:Image ID="Image1" runat="server" ImageUrl="Archsupp.ico" BorderColor="Red" BorderWidth="1" />

L'icona viene visualizzata? Se sì, allora il problema è nel codice.

Una delle cause *potrebbe* essere il content type. Magari Safari gradisce una stringa diversa da "image/x-icon", ma non ho idea da quale sia. Prova con "image/vnd.microsoft.icon"

Anche la Content-Disposition potrebbe essere la causa, se per esempio Safari volesse che il Filename sia scritto senza doppi apici o con l'apice singolo. Per il momento, prova ad escludere la riga di codice in cui imposti la Content-Disposition e vedi se a quel punto l'icona viene mostrata. Poi, se fosse questa la causa, troviamo un modo per far digerire il Filename anche a Safari.

In alternativa, anziché puntare all'HttpHandler direttamente, potresti usare il modulo Url Rewrite di IIS per farti "tradurre" la richiesta ad un percorso come /icone/Archsupp.ico in /test.ashx?name=Archsupp. In questo modo non dovresti più impostare una Content-Disposition perché il browser userebbe il nome del file della richiesta, cioè Archsupp.ico

Anche usare un VirtualPathProvider potrebbe essere una soluzione.

FranzIt ha scritto:

Le mie Foto su Flickr!!

Belle, complimenti!
Sei maceratese anche tu? :)

ciao,
Moreno

Enjoy learning and just keep making
124 messaggi dal 12 febbraio 2007
Ciao e grazie della risposta
alla fine le ho provate tutte , comprese le soluzioni da te indicate.
ho risolto convertendo l'incona in .png a runtime, la vede cosi ovunque...

penso cmq che il problema dipenda dalla versione di safari o di apple...insomma di quel mondo li (sono totalmente ignorante in materia)
su un altro MAC con un altro sistema operativo le icone si vedono quindi....


si maceratese anche io :))

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.