我开发一个网站要被移动(蜂窝电话)的设备上查看。我只是用普通的HTML 4.01,没什么特别的。该页面呈现在所有我们测试过,除了诺基亚Series 40 1-5th版本的移动浏览器的罚款。在仔细检查,似乎IIS被自动地再现与内容类型text/vnd.wap.wml代替text/html的HTML。因为我们没有使用WAP,页面因错误而失败。

我使用ASP.Net MVC 1.0,所以我已经添加了一个ActionFilterAttribute覆盖内容类型。此代码运行,但仍然出来为在客户端vnd.wap.wml。结果  我使用这个文档类型;

<?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">

值得注意的是,vnd.wap.wml是由所述移动浏览器中指定的第一Accept-Encoding,因此我假定IIS7正在服它为这个原因。我猜是MVC没有具体提到为.html(或的.aspx)文件,也许MIME类型被忽略?我怀疑这可能是一个IIS修复,而不是一个码修复。

任何帮助非常感谢!

有帮助吗?

解决方案

原来我还没有正确地实施了ActionFilter ..我需要覆盖除OnActionExecuted方法OnResultExecuted方法。完整的属性看起来是这样的(刚加入[HtmlOverrideFilter]您的控制器需要的地方)。希望这可以帮助别人。

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";
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top