c# - 默认响应 Content-Type 有问题

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

我有一个具有以下 Doctype 的网站:

<!DOCTYPE HTML>
<html>...</htm>

我发现了导致某些移动浏览器崩溃的问题(黑莓和较旧的机器人)。例如,在 Android 上,当发出请求时,它会发送此 header :

Accept: application/xml,appliation/xhtml+xml,text/html ...

问题是我的网站不符合 XHTML,但 IIS 决定,既然请求页面的浏览器更喜欢 xhtml,那么它应该提供 xhtml 而不是 text/html .

我尝试通过添加 <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8"> 来覆盖它到页面,但它不起作用。

我正在尝试找出最简单的方法来告诉 iis 停止为所有对 http://mydomain.com/mobile 的请求提供 xhtml。 .我正在考虑通过覆盖 HttpModule 中的 Response.Content-Type 来实现。

这里有什么我遗漏的吗?修复它的最佳方法是什么?

最佳答案

IIS 没有您提到的功能(覆盖 .NET 输出的内容类型),因为这取决于应用程序。当移动设备“中断”时会发生什么,您能提供 HTTP 调试跟踪吗?

要测试 ContentType 是否真的是问题所在,请将其添加到您的某个页面的 Page_Load 事件中,然后在受影响的移动设备上查看该页面。

Response.ContentType = "text/html";

移动浏览器与桌面版本有一些不同之处,它们解析 JavaScript,以不同方式处理 DOM 元素。例如,Mobile Safari 有一个不完整的 Date.parse() 方法,这会导致 JS 在该页面上中断。

尝试在 Debug模式下运行移动浏览器(如果可能)并查看实际错误是什么。因为我看不出 IIS 如何随意更改内容类型,尤其是 XHTML 类型,这意味着底层 HTML 必须完美

关于c# - 默认响应 Content-Type 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115523/

相关文章:

c# - 为什么 volatile 和 MemoryBarrier 不阻止操作重新排序?

asp.net - 在调用 RegisterScriptDescriptors() 之前,必须使用 RegisterExtenderControl() 注册扩展器控件

iis-7 - IIS7.5 中未读取 web.config 中的 HttpCompression 元素

c# - CaSTLe Windsor 拦截器不适用于方法级属性

c# - 无法访问已处置的上下文实例

c# - 获取命名空间内的所有类

asp.net - 在 Visual Studio 2008 中调试 HTTPS ASP.NET 站点?

asp.net - 基于 web.config 的 url 重写的绝对最小内容是什么?

c# - 从方法返回 LINQ 数据库查询

asp.net - Telerik RadAjaxManager 仍然回发