Domanda

Sto sviluppando un sito web che è per essere visualizzato su dispositivi mobili (cellulare). Sto usando solo semplice HTML 4.01, niente di speciale. Le pagine rendono bene su tutti i browser mobili che abbiamo testato, ad eccezione di Nokia Series 40 edizioni 1-5th. A ben vedere, sembra che IIS sta rendendo automaticamente l'HTML con il tipo di contenuto di text/vnd.wap.wml invece di text/html. Dal momento che non stiamo usando WAP, la pagina non riesce con un errore.

sto usando ASP.Net MVC 1.0 così Ho una ActionFilterAttribute per ignorare il tipo di contenuto. Questo codice viene eseguito, ma ancora esce come vnd.wap.wml sul lato client.
 Sto usando questo tipo di documento;

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Vale la pena notare che il vnd.wap.wml è il primo Accept-Encoding specificato dal browser del cellulare, in modo da assumere IIS7 sta servendo in su per questo motivo. E immagino come MVC non specificamente riferimento a .html (o aspx) file, forse il mime-type viene ignorato? Ho il sospetto che questo è probabilmente una correzione di IIS piuttosto che un codice-fix.

Ogni aiuto è molto apprezzato!

È stato utile?

Soluzione

Risulta che non avevo dato corretta esecuzione alla ActionFilter .. avevo bisogno di sovrascrivere il metodo OnResultExecuted in aggiunta al metodo OnActionExecuted. L'attributo completo assomiglia a questo (basta aggiungere [HtmlOverrideFilter] ai controller dove necessario). Spero che questo aiuta qualcuno.

internal class HtmlOverrideFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.ContentType = "text/html";
    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.ContentType = "text/html";
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top