问题是默认响应Content-Type

时间:2011-05-24 19:06:54

标签: c# asp.net iis-7 content-type httpmodule

我的网站有以下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来实现它。

这里有什么我想念的吗?解决问题的最佳方法是什么?

2 个答案:

答案 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">并查看是否有帮助。另外,请看以下参考:

W3C Recommended list of Doctype declarations