asp.net的MVC保持压倒一切的text / html内容类型与的.wml
-
19-09-2019 - |
题
我开发一个网站要被移动(蜂窝电话)的设备上查看。我只是用普通的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";
}
}
不隶属于 StackOverflow