在一次发布Flex程序到服务器后,刚打开网站并未向服务器请求数据,FlashPlayer日志马上显示错误:
错误: 请求位于 xmlsocket:
//localhost:27813 的资源(请求者从 http://192.168.0.100/test/Main.swf发出请求),原因是无法访问服务器
*** 安全沙箱冲突 ***
到 localhost:27813 的连接已停止 - 不允许从 <a href=
"http://192.168.0.100/test/Main.swf"
>http://192.168.0.100/test/Main.swf</a> 进行连接
|
当向服务器请求数据时,再有报错:
中文错误
faultCode:Channel.Security.Error
faultString:
'访问 URL 时遇到安全性错误'
faultDetail:
'目标:DefaultHTTP'
英文错误
faultCode:Channel.Security.Error
faultString:Security error accessing url
faultDetail:Destination: DefaultHTTP
|
FlashPlayer日志显示错误:
警告: 未能 http:
//localhost:37813/crossdomain.xml 中加载策略文件
*** 安全沙箱冲突 ***
到 http:
//localhost:37813/test/User.ashx?hostport=192.168.0.100&https=N&id=C0D13BEB-D6A2-7178-96D0-448784A3951D 的连接已停止 - 不允许从 http://192.168.0.100/test/Main.swf 进行连接
我顿时纳闷了:
1.所有Flex和ASP.NET文件都放在http://192.168.0.100/test中,按道理不存在跨域访问的问题,也就是不需要crossdomain.xml策略文件。
2.第一次打开网站时不可能向服务器请求数据(代码确认),那这个请求从何而来?
3.数据都在服务器,怎么反而访问本地的localhost的27813或37813端口?
经过个多星期的反复测试找原因,在一次对比正常项目的文件中,发现项目文件.actionScriptProperties里,compiler段其中一个属性includeNetmonSwc,正常项目该值是false,而有问题项目该值是true!问题似乎找到了,修正该值后重新编译项目,问题解决!
具体原因参见:《Flash Builder Network Monitor Project Property Causes HTTP Security Error》,意思是曾经打开过Flex Builder的网络监视器,则includeNetmonSwc便自动设置为true。该属性的意思是包含网络监视器的swc类库,当我们发布时,不需要网络监视器的类库,但Flash Builder把类库也加载进来了,于是报错。
当然还有一个更简单的办法,就是发布前保证网络监视器是禁用状态,也能避免问题的出现。
希望能帮助遇到类似问题的朋友。
转载请注明原文地址:http://www.cnblogs.com/litou/archive/2011/10/28/2227929.html