OutputCache造成页面响应内容类型为text/vnd.wap.wml的问题
这段时间,访问博客园首页有时会出现text/vnd.wap.wml文件下载的对话框,如下图:
出现这个问题后,等1分钟左右或者回收应用程序池就恢复正常。开始以为是IIS 7的问题,不知道从何处下手去找出原因。
今天终于在iis.net的论坛中找到了原因:Prevent automatic content type switching to text/vnd.wap.wml of *.aspx files。
问题是在下面的情况下出现的:
博客园首页使用了ASP.NET的页面缓存:
<%@ OutputCache Duration="60" VaryByParam="*" VaryByCustom="FullUrl" %>
当某个只能接受text/vnd.wap.wml内容类型的客户端在缓存过期时访问博客园首页,ASP.NET会建立响应内容类型为text/vnd.wap.wml的缓存,这时正常浏览器访问得到的就是text/vnd.wap.wml响应内容,于是出现文件下载对话框,当这个缓存过期后就恢复正常。
下面我们用测试代码重现这个问题。
测试页面文件为http://www.zzzyk.com /wap_test_1.aspx,代码如下:
<%@ OutputCache Duration="360" VaryByParam="none" Location="Any"%>
<html>
<head><title>Test</title></head>
<body>
<p>Hello World</p>
</body>
</html>
<head><title>Test</title></head>
<body>
<p>Hello World</p>
</body>
</html>
通过一个控制台程序模拟只接受text/vnd.wap.wml内容类型的客户端,代码如下:
using System;
using System.IO;
using System.Net;
class Program
using System.IO;
using System.Net;
class Program
- 更多wap疑问解答:
- 新人求助QPainter
- 为什么程序都退出了还可以收到推送?如果大多设备都可以推送那运营商怎么办?
- qt 4.7 sqlserver2000 存储过程调用
- 关于ANDROID4.0.1编译问题!
- Android FrameBuffer读屏幕30秒后mmap失败
- 联通粗定位用java程序如何来请求和接受数据
- 为什么QT运行Android平台的程序时,mouseMoveEvent事件响应的间隔时间很长??????????
- android与PC蓝牙通讯
- 指定大小的label 内容可变,如果内容超出label的宽度,将未能显示的部分显示在另一个label上
- Android调试
- android如何通过wifi连接无线打印机
- 运行程序,release目录下产生一个乱码文件夹
- 分享个某机构最新安卓资料,自己验证了
- service启动不起来,掉不了service connection
- 求助:QT5.0 没有QPrinter吗