asp.net网站,打开网站,提示下载网页解决方法(未知文件类型、text/vnd.wap.wml)
这段时间,做的一个asp.net的网站项目正式上线后,偶尔有浏览用户反映,当打开网站时直接提示用户“您想保存此文件么?文件名称:xxx.aspx 文件类型:未知 发送者:www.57023.com”这样的下载信息。如下面:

经过分析,罪魁祸首是我在项目使用了gzip压缩技术,并且同时设置了OutputCache缓存功能。如下图:

当用户甲浏览器支持gzip技术,并且是第一个访问网页A时,这时服务器就会以用户甲的数据格式(gzip格式)建立缓存。接下来,在服务器缓存没有失效前,用户乙再访问网页A时,服务器就会直接使用缓存数据,然而用户乙浏览器又不支持gzip的数据格式,故就出现上述的问题了。
解决方法非常简单:
把<%@ OutputCache Duration="600" VaryByParam="none" %>
修改成<%@ OutputCache Duration="600" VaryByParam="none" VaryByContentEncoding="*" %>
我满以为,上面的问题已经彻底解决了,然而过了几天,又有人反映,有时打开网页,提示下载(非专业人士说,像病毒,下我一跳)。这次提示的消息与上次有别“...text/vnd.wap.xml...”,如下图。

做过手机网站的朋友一看就知道,“text/vnd.wap.xml”是手机网页的专用格式,有了上次的经验,我很快就想到了原因:当手机用户甲第一个打开网页A时,服务器就会以用户甲的“text/vnd.wap.xml”格式建立缓存,在缓存没用失效之前,所有打开网页A的浏览者得到的都是“text/vnd.wap.xml”格式,ie、firefox等浏览当然没法识别“text/vnd.wap.xml”,故造成上述结果。
解决方法同样非常简单:
把OutputCache添加上VaryByHeader参数
<%@ OutputCache Duration="600" VaryByParam="none" VaryByContentEncoding="*" VaryByHeader="Content-Type"%>

浙公网安备 33010602011771号