在flex程序初始化默认加载滚动条还没出来时就报了Error 2032
IO流错误,但只限于三维演示厅里的用户机上运行时才出现,别的机器都正常,后来将flash builder中的编译参数改为merged into
swf,就是将flex框架嵌入到swf里面,而不是使用shared library共享库,问题解决。
过了几个月又碰到这个问题,只是在笔记本上会报Error2032,在其他电脑上都没问题,用Fiddler分析http请求发现,在使用RSL的flex程序初始化时会去下载xxx.swz文件,而IIS服务器返回的是404找不到此文件,而服务器上分明有这个文件,怀疑是IIS没有swz文件的MIME类型,在IIS上增加swz的MIME类型为application/x-swz后,问题解决!
为什么只在某些电脑上发生这个错误?因为RSL的机制问题,当flash
player第一次访问使用RSL的flex程序时,会下载所需的swz文件,然后保存在flash
player自己的缓存目录里(win7下为X:\Users\用户名\AppData\Roaming\Adobe\Flash
Player\AssetCache\随机目录名),清除浏览器的缓存并不会影响flash
player的缓存。再次访问时会先检查并使用缓存中的swz文件,所以在已有swz缓存的电脑上不会出现这个问题。
OK,这次算是找到根本原因了,可以无忧的享受RSL带来的好处!
在IIS上增加swz的MIME类型为application/x-swz的方法
打开IIS管理器,打开“本地计算机”的属性——》MIME类型——》新建 后缀名:.swz MIME类型:application/x-swz