2007
04.11
04.11
接續著[Flex2中的services-config.xml設定檔 part I]這篇,繼續討論 services-config.xml 設定的問題,如果當初 Flex 專案建立時沒有選取 Flex Data Services 的選項,那麼 Flex Server的選項就不會出現,這很傷腦經耶,好,既然不出現,乾脆放棄他算了。
什麼,放棄他?沒錯,你並沒有看錯,因為不必為了要在 Flex Compiler中加上參數,非得要開一個 Flex Data Services 的專案,如果不能用 Flex Server 的選項,就乾脆不用,不過這也要端看你使用什麼服務,例如如果你只用 AMF 服務,那你可能根本不需要 Flex Data Services ,你只需要開一般專案就好,所以當開啟了一個新的專案,又需要使用到一些設定時,直接在 Flex Compiler的介面下輸入參數即可(在此例中我們是加入一個 services-config.xml 的設定檔),如下圖:

然後不需要想太多,在專案目錄下自己產生一個完全專屬自己的設定檔就好了,不需一定要寫在 Flex 給我們的設定檔中,當然,你還是需要遵守原來設定檔的規則,所以你只需要像下圖一樣,自己建立出來就可以了。

恭喜,這樣就可以程式跑了,好吧,下次再來談談其他的 Flex Trouble。
相關文章:
本文引用:
文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。
文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。


Dear royllik:
我還沒時間看你的問題你就解決了,恭喜啊,基本上FMS在非特殊狀況下是不會用到HTTPService的,不過既然你解決了就不去追究了,後面你所遇到的問題還是安全性上的問題,也就是你必需往crossdomain的問題上去尋找,我幫你把Help中關於安全性的描述貼出來給你看。
To make data available to SWF files in different domains, use a cross-domain policy file. A cross-domain policy file is an XML file that provides a way for the server to indicate that its data and documents are available to SWF files served from other domains. Any SWF file that is served from a domain that the server’s policy file specifies is permitted to access data or assets from that server.
最簡單的方法是自己建立一個crossdomain.xml放置在使用服務的的根目錄下,當然更深入的方法要去研討關於安全性上的問題。
dear anistar:
終于找到問題了,原來是FMS服務器的端口被關閉了,不能訪問,而我的代碼中是只有連接的FMS服務器才去取HTTPService的資料的,搞了半天,原來是這麽回事,不過又遇到了新的問題:
在程序中,用了一個ViewStack ,其中一個View播放FMS服務器上的netstream,這些netstream是別人發布的,但在播放的時候如果切換到其它View
就老出現
SecurityError: Error #2135: 安全沙箱冲突:BitmapData.draw:file:///D:/work/avchat/bin/avchat-debug.swf 不能访问 rtmp://10.10.206.232/avchat_server。无法使用此 API 访问 RTMP 内容。
這樣的錯誤
dear anistar:
我按你的提示又仔細看了下,發現trace(Security.sandboxType);
顯示的是localTrusted,我覺得似乎就是這的問題,按手册上的說法,應該顯示
remote,才對,但怎樣才能在flex中設定它的Security sandboxes呢?
我加了Security.allowDomain("*"); 的參數似乎也不管用,我覺得應該在編譯時把它的Security sandboxes指定為Remote sandboxes,才行把?
Dear royllik:
這是Flash安全性上的問題,你可以往crossDomain這個方向去找(Help中寫的很清楚),相信就可以發現答案了.
dear anistar,
我搜索時,找到這裏,我的程序中使用了HTTPService和Flash Media Server,
HTTPService和FMS都假設在自己的機器上,編譯的程序在我電腦上訪問沒有任何問題,但在其它機器上訪問時就不能獲取HTTPService的資料,也不能連接上FMS服務器,HTTPService的url和FMS的連接地址都是直接用的IP,因爲我看見利用AMFPHP的代碼在編譯時加了 -services "services-config.xml"的參數,并建立了services-config.xml檔案,不知道這個問題是不是和你這裏講的services-config.xml有關係?那裏有services-config.xml的詳細資料?
dear anistar:
很抱歉发布了那篇flash remoting的文章,sorry,我的解决方法是在project,按照您的做法,copy出services-config.xml,并在argument的地方对其多添加-context-root "‘的设定,但这一切的一切都建立在我升级到flex2.0.1的情况下,在flex2情况下,我也有成功过,但多次失败,我确认是flex2的bug。因为我在flex.2.0.1中百试百灵,所以我建议升级到flex2.0.1,至于其它的是什么问题导致在flex2中不行,我就不是太清楚了。
Dear 當當:
看你的錯誤訊息一定是沒有找到flash remoting gateway或是cfc的file,請把service-config.xml的設定改用全手動的,不要自己抓{contextroot},不過我看到你在網路上有發表連接CF的教學,不是代表你已經搞定了嗎?如果搞定了可以來分享你遇到什麼問題.
我就是透過這樣的方式,但會提示我channel.connect.failed
@@,鬱悶到。cfc存放在test/helloword.cfc
Dear 當當:
如果你用的是ColdFusion的方法, 那麼的確是{context.root}/web-inf/flex 目錄底下的services-config.xml檔,若怕麻煩,把該檔copy到專案底下也可以使用, 只要在compile指令多加要參考哪個設定檔即可.
你好,anistar:
看到你写的这篇文章,我很高兴,因为我正受这个困扰,我是希望用flex将cfc传送的一个query读取并show在界面上,但在我把程式都调试到没有错误显示的时候,run起来提示我Client.error.messageSend, faultDetail:’Channel.Connect.Failed error’,http的状态是405,我想请教你,这个如何操作呢。是不是和路径有关,在这之前我曾经遇到过找不到destination:Coldfusion,但我按照你的方法设定后,就出现这个错误,是不是文件的路径不对?
我告诉你我设定的cf的路径是D:\CFusionMX7\,我的flex2的project是D:\CFusionMX7\wwwroot\Helloword,而flex的安装目录是:D:\Flex Builder 2,我不知道你所说的services-config.xml是不是指D:\CFusionMX7\wwwroot\WEB-INF\flex\services-config.xml这个档案.请帮我解答下,谢谢