Pergunta

Estou desenvolvendo um site que deve ser visualizado em dispositivos móveis (celulares). Estou apenas usando o HTML 4.01 simples, nada de especial. As páginas ficam bem em todos os navegadores móveis que testamos, exceto as edições da série 40 1-5. Em uma inspeção mais detalhada, parece que o IIS está renderizando automaticamente o HTML com o tipo de conteúdo de text/vnd.wap.wml ao invés de text/html. Como não estamos usando o WAP, a página falha com um erro.

Estou usando asp.net MVC 1.0, então adicionei um ActionFilterAttribute para substituir o tipo de conteúdo. Esse código é executado, mas ainda sai como vnd.wap.wml no lado do cliente.
Estou usando este doctype;

<?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 a pena notar que o vnd.wap.wml é o primeiro Accept-Encoding Especificado pelo navegador móvel, por isso presumo que o IIS7 esteja servindo por esse motivo. E acho que, como o MVC não se refere especificamente a arquivos .html (ou .aspx), talvez o tipo MIME esteja sendo ignorado? Suspeito que isso seja provavelmente uma correção do IIS, em vez de um código de código.

Qualquer ajuda é muito apreciada!

Foi útil?

Solução

Acontece que eu não havia implementado o Filter Action. O atributo completo se parece com esse (basta adicionar [htmloverridefilter] aos seus controladores, quando necessário). Espero que isso ajude alguém.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top