mx:WebService导致的浏览器崩溃

这算是回头去记录一些以前遇到的问题。

在一个视频监控的项目里,忽然在调试的时候出现浏览器常常崩溃的情况。而且一旦崩溃后就调试不能。但是项目编译确没有问题,swf文件照常生成,打开相应网页也能在浏览器中正常工作,唯独不能调试。不论使用IE还是FF都出现同样的问题。

多方查看后确定造成这种情况的原因竟然是一段webservice的mxml的代码。这段代码非常普通,以前也有用,但偏偏这次出现这种怪现象。代码大体如下:

<mx:WebService id="webService" wsdl="http://localhost/webservice.asmx?wsdl">
	<mx:operation name="GetInfo"
                resultFormat="object"
                result="GetInfo_result(event);"
                fault="GetInfo_fault(event);" />
</mx:WebService>

更糟糕的是无论怎么修改这段代码哪怕精简的到只剩下

<mx:WebService id="webService"></mx:WebService>

浏览器继续崩溃的噩梦。

然而,一旦整个移除这段代码后,程序就恢复如初,可以调试,运行起来也一切正常。最后我仍没有找到问题的蛛丝马迹。难道还是自己犯下的某个低级错误?更可笑的是在加入这段看似正常的代码后,如果偶然可以正常调试一次,但是第二次浏览器必然继续崩溃。之后如果重启系统也许还能正常调试一次,第二次继续崩溃...

最后,经过半天的奋斗后,无奈之下我只好删除那段代码,然后导入mx.rpc.soap.WebService包,用AS代码去调webservice。

var service:WebService = new WebService();
service.loadWSDL("http://localhost/webservice.asmx?wsdl");
service.addEventListener(FaultEvent.FAULT, serviceFaultHandler);
service.GetInfo.addEventListener(ResultEvent.RESULT, serviceResultHandler);
service.GetInfo();

如此才一切正常。奇怪啊...仅此记之。