我的网站有以下Doctype:
<!DOCTYPE HTML>
<html>...</htm>
我发现了导致某些移动浏览器崩溃的问题(黑莓和老式机器人)。例如,在Android上,当发出请求时,它会发送此标题:
Accept: application/xml,appliation/xhtml+xml,text/html ...
问题是我的网站不符合XHTML,但IIS决定由于请求页面的浏览器更喜欢xhtml,因此它应该提供而不是text/html
。
我尝试通过向页面添加<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
来覆盖它,但它不起作用。
我正试图找出告诉iis停止为http://mydomain.com/mobile
的所有请求提供xhtml的最简单方法。我想通过覆盖HttpModule中的Response.Content-Type来实现它。
这里有什么我想念的吗?解决问题的最佳方法是什么?
答案 0 :(得分:1)
IIS没有您提到的功能(覆盖.NET输出的内容类型),因为它取决于应用程序执行此操作。移动设备“断开”时会发生什么,您能提供HTTP调试跟踪吗?
要测试ContentType是否确实存在问题,请将其添加到其中一个网页的Page_Load事件中,然后在受影响的移动设备上查看该页面。
Response.ContentType = "text/html";
移动浏览器对桌面版本有疑问,他们解析JavaScript,以不同方式处理DOM元素。例如,Mobile Safari有一个不完整的Date.parse()方法,它会导致JS在该页面上中断。
尝试在调试模式下运行移动浏览器(如果可能),看看实际的错误是什么。我无法看到IIS将如何改变内容类型,特别是对于XHTML类型,这意味着底层HTML必须完美,
答案 1 :(得分:1)
尝试将您的DOCTYPE设置为<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
并查看是否有帮助。另外,请看以下参考: