Pregunta

Estoy desarrollando un sitio web que es para ser visto en dispositivos móviles (teléfono móvil). Sólo estoy usando la versión HTML 4.01, nada especial. Las páginas hacen muy bien en todos los navegadores móviles que hemos probado, excepto para Nokia Series 40 ediciones 1-5th. En una inspección más cercana, parece que IIS está prestando automáticamente el HTML con el tipo de contenido de text/vnd.wap.wml en lugar de text/html. Puesto que no estamos usando WAP, la página de falla con un error.

Estoy usando ASP.Net MVC 1.0 por lo que hemos añadido un ActionFilterAttribute para anular el tipo de contenido. Este código se ejecuta, pero todavía sale como vnd.wap.wml en el lado del cliente.
 Estoy usando este tipo de 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 señalar que el vnd.wap.wml es la primera Accept-Encoding especificado por el navegador móvil, así que supongo IIS7 está sirviendo para arriba por esa razón. Y supongo que MVC no se refiere específicamente a .html (o .aspx) archivos, tal vez se saltó el tipo MIME? Sospecho que esto es probablemente una revisión de IIS en lugar de un código de corrección.

Cualquier ayuda es muy apreciada!

¿Fue útil?

Solución

Resulta que yo no había implementado el ActionFilter correctamente .. que necesitaba para reemplazar el método OnResultExecuted además del método OnActionExecuted. El atributo completo es el siguiente (sólo tiene que añadir [HtmlOverrideFilter] a los controladores cuando sea necesario). Espero que esto ayude a alguien.

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";
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top