随笔-254  评论-3298  文章-48  trackbacks-74

Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx

     在本系列前面几篇文章中分别介绍了通过WebService、HTTPService、URLLoader以及FielReference等组件或类来完成Flex与.NET服务端的通信的相关知识点。通过这些方式来完成与服务端的通信是非常方便和简单的,但有他的缺点就是通信数据量较小,如要传输大量的数据或是实现不同对象的序列化传输,它们则满足不了我们的需求,需要寻找另外一种通信协议,另一种高效的传输协议来代替SOAP协议传输的方案,那便是AMF(ActionScript Message Format)协议。

     开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF协议通信网关,我们可以通过FluorineFx很方便的完成与.NET的通信。

     FluorineFx官方提供了安装包的下载和在线文档,可以帮助我们有效的利用FluorineFx来开发。 

     FluroineFx官方网站:http://www.fluorinefx.com/    

     FluroineFx下载地址:http://www.fluorinefx.com/download.html

     FluroineFx在线文档:http://www.fluorinefx.com/docs/fluorine/index.html

     

     OK,下面我们来看看使用FluroineFx通信的.NET和Flex配置。开发环境选择如下:

     .NET:Microsoft Visual Studio 2008 + .NET Framework 3.5

     Flex:Adobe Flex Builder CS3 + Flex SDK 3.2

     FluroineFx:FluorineFx v1.0.0.15 (点击可下载)

 

 一、.NET服务端的开发

     通过Microsoft Visual Studio 2008 创建创建解决方案,并添加FluroineFx服务器库,如下图示:

     FluorineFx服务库添加成功后会发现,项目模板会自动为我们创建一个Sample类和一个Echo方法,如下:

 1 namespace FlexDotNet.ServiceLibrary
 2 {
 3     /// <summary>
 4     /// Fluorine sample service.
 5     /// </summary>
 6     [RemotingService("Fluorine sample service")]
 7     public class Sample
 8     {
 9         public Sample()
10         {
11         }
12 
13         public string Echo(string text)
14         {
15             return "Gateway echo: " + text;
16         }
17     }
18 }

 

     接着添加FluorineFx 网站到解决方案,添加成功后网站会自动引用FluorineFx服务库的dll。如下图:

     到这里我们可以简单的测试FluorineFx的.NET服务端是否成功创建。通过在浏览器中查看FluroineFx网站中的Console.aspx或是将网站设置为启动项目并设置Console.aspx为启始页运行网站都可以,程序便会运行到FluorineFx的控制台,展开左边项目的Services节点便会看到上面模板为我们创建的类和方法,点击方法节点在右边就可以进行简单的测试了,如下图示:

     

     OK,到这里.NET的服务器端就开发完成了,这里我们需要记住几点,在接下来的Flex开发中需要根据这些参数来进行配置。

     FluorineFx的.NET网站目录:F:\Demo\FlexDotNet\Web

     FluorineFx的.NET网站虚拟目录:/Web

     FluorineFx的.NET网站URL:http://localhost:2836/Web

     接受Flex客户端请求的URL:http://localhost:2836/Web/Gateway.aspx

     有了上面这些东西配置Flex就简单了,首先创建Flex项目,并将项目路径指向前建立的FluorineFx网站的根路径:

     如上图,将Application type设置为:Web application,Application Server type设置为:ASP.NET,然后“Next”。进入下一个创建项目向导界面,将Server设置为:"Use Internet Information Services (IIS)",Web Application root同样指向FluorineFx网站的根路径,Web Appliation URL则设置为上面我们获取到的路径便OK,详细见下图:

     按照上面步骤配置好后通过点击“Validate Configuration”进行配置验证,如过验证结果是: The web application root and the URL are valid.则代表配置正确,可以直接点下一步只到完成项目的创建。

     Flex项目创建完毕,下面在通过一些相应的配置就可以通过FluorineFx和.NET通信了。开发项目属性设置面板,设置其Flex Compiler为下图所示(-services的配置也可以设置为相对路径):

     设置Flex Server为如下配置,可以点“Validate Location”验证设置的正确性:

     最后设置输出路径就完成了Flex端的配置了:

 

     到这里Flex端的配置就全部完成,下面我们通过FluorineFx库模板为我们生成的Sample为例来测试下该环境是否可以通过,在Flex的mxml文件下通过<mx:RemoteObject>标签来访问远程对象,详细如下:

1 <mx:RemoteObject id="service" destination="fluorine"
2     source="FlexDotNet.ServiceLibrary.Sample">
3         <mx:method name="Echo" result="onResult(event)">
4         </mx:method>
5 </mx:RemoteObject>

 

     这里需要注意的是destination需要设置为与remoting-config.xml中的destination的id一致,source则配置为远程对象的全路径(名称空间+类),通过<mx:method>标签配置远程对象下的方法并设置其成功调用后的结果处理函数,下面便可通过id去调用远程方法了。

 1 <mx:Script>
 2     <![CDATA[
 3         import mx.rpc.events.ResultEvent;
 4         internal function onClick():void
 5         {
 6             service.Echo(txtInput.text);
 7         }
 8         
 9         internal function onResult(evt:ResultEvent):void
10         {
11             txtResult.text = evt.result.toString();
12         }
13     ]]>
14 </mx:Script>

 

下面是完整的Flex客户端mxml的代码定义:

完整的示例代码

 

本文示例截图:
     

 

版权说明

  本文属原创文章,欢迎转载,其版权归作者和博客园共有。  

  作      者:Beniao

 文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

 

posted on 2009-01-19 00:04 Bēniaǒ 阅读(16532) 评论(140) 编辑 收藏

评论:
评论共2页: 上一页 1 2 
#41楼[楼主] 2009-05-25 18:22 | Bēniaǒ      
@雁北
你可以自定义对话框的.
我在开发flex的时候在特别的地方都是自己重写Alert.

 回复 引用 查看   
#42楼 2009-06-11 14:30 | qintianxu[未注册用户]
描述 资源 路径 位置 类型
unable to open 'D:\Program Files\Adobe\Flash Builder Beta\sdks\4.0.0\frameworks\locale\en_US-services E:\fluorinefx3\WEB-INF\flex\services-config.xml' 请问楼主这是这个是哪里错了啊?

 回复 引用   
#43楼 2009-06-11 14:31 | qintianxu[未注册用户]
为什么那个路径总是出问题呢 ?
 回复 引用   
#44楼[楼主] 2009-06-12 09:21 | Bēniaǒ      
@qintianxu
配置不对,你不配置services-config.xml也一样的可以的.
建立项目的时候不选择服务器类型就行了.

 回复 引用 查看   
#45楼 2009-06-12 11:52 | qintianxu[未注册用户]
楼主能不能告诉我,这个配置哪里不对啊 ?
不选择服务器类型也会报一个错:
[RPC Fault faultString="[MessagingError message='Destination 'fluorine' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'fluorine'"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::invoke()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:263]
at mx.rpc.remoting.mxml::Operation/http://www.adobe.com/2006/flex/mx/internal::invoke()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:197]
at mx.rpc.remoting::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\Operation.as:113]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.rpc.remoting.mxml::Operation/send()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\remoting\mxml\Operation.as:170]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.rpc::AbstractService/http://www.adobe.com/2006/actionscript/flash/proxy::callProperty()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractService.as:290]
at fluorinefx4/onClick()[E:\fluorinefx4\WebSite1\src\fluorinefx4.mxml:15]
at fluorinefx4/___fluorinefx4_Button1_click()[E:\fluorinefx4\WebSite1\src\fluorinefx4.mxml:26]

 回复 引用   
#46楼[楼主] 2009-06-12 15:30 | Bēniaǒ      
@qintianxu
你有没有启用默认的RTMP协议通信通道啊!在配置文件里的.

 回复 引用 查看   
#47楼 2009-06-12 16:33 | qintianxu[未注册用户]
我的是这样的 ,不知道哪里错了,请楼主帮我检查下
<service id="remoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">

<!-- DO NOT CHANGE <adapters> SECTION-->
<adapters>
<adapter-definition id="dotnet" class="FluorineFx.Remoting.RemotingAdapter" default="true"/>
</adapters>

<default-channels>
<channel ref="my-amf"/>
</default-channels>

<destination id="fluorine">
<properties>
<source>*</source>
</properties>

 回复 引用   
#48楼[楼主] 2009-06-13 15:35 | Bēniaǒ      
@qintianxu 下面这才是RTMP协议通信的通道配置
<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:1617" class="flex.messaging.endpoints.RTMPEndpoint"/>
</channel-definition>

 回复 引用 查看   
#49楼 2009-06-21 23:58 | 励冰      
我用的是
Microsoft Visual Studio 2008 专业版
创建创建解决方案,并添加FluroineFx服务器库 后
就是没法 添加FluorineFx 网站到解决方案 请问楼主是怎么添加的啊。
根本就没这个网站选项。

本人比较菜,头一次玩这东东。

 回复 引用 查看   
#50楼 2009-06-22 09:03 | 励冰      
自个的问题自个解决了,原来是解决方案被隐藏起来了。
在选项里设置一下就行了。

 回复 引用 查看   
#51楼[楼主] 2009-06-22 09:46 | Bēniaǒ      
@励冰
^.^
RIA技术联盟群欢迎你的加入,群号:26917590

 回复 引用 查看   
#52楼 2009-06-22 10:29 | 励冰      
好,一定加入。
刚刚把你这个例子测试完毕。
楼主的文章很好,详细好理解。

 回复 引用 查看   
#53楼 2009-06-23 09:37 | billmanliu
您好.您给出的例子运行正常。在iis中建立一样的虚拟目录,运行也正常。但换了虚拟目录名称,运行就不正常了。请问发布网站时,应该修改哪个配置文件?
 回复 引用   
#54楼 2009-07-07 09:19 | 听棠.NET      
楼主有问题啊:
我是用的flash builder 4了,在Flex Server配置的界面上,没有了context root配置项,然后现在出现如下的报错,就是因为地址错了
[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:3668/Gateway.aspx'"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\dev\beta1\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:345]
at mx.rpc::Responder/fault()[E:\dev\beta1\frameworks\projects\rpc\src\mx\rpc\Responder.as:73]
at mx.rpc::AsyncRequest/fault()[E:\dev\beta1\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:113]
at mx.messaging::ChannelSet/faultPendingSends()[E:\dev\beta1\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1543]
at mx.messaging::ChannelSet/channelFaultHandler()[E:\dev\beta1\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1134]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.messaging::Channel/connectFailed()[E:\dev\beta1\frameworks\projects\rpc\src\mx\messaging\Channel.as:1067]
at mx.messaging.channels::PollingChannel/connectFailed()[E:\dev\beta1\frameworks\projects\rpc\src\mx\messaging\channels\PollingChannel.as:406]
at mx.messaging.channels::AMFChannel/statusHandler()[E:\dev\beta1\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:444]

这里我看出来。'http://localhost:3668/Gateway.aspx'这个地址是不对的,应该是'http://localhost:3668/FlexServiceWeb/Gateway.aspx'

服务器上的Services-config.xml里配置项为如下:
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<!-- <legacy-collection>true</legacy-collection> -->
</properties>
</channel-definition>
<!--
<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:2037" class="flex.messaging.endpoints.RTMPEndpoint"/>
<properties>
<idle-timeout-minutes>20</idle-timeout-minutes>
</properties>
</channel-definition>
-->
</channels>

 回复 引用 查看   
#55楼[楼主] 2009-07-07 09:43 | Bēniaǒ      
@听棠.NET
这一系列文章都是基于Flex Builder 3写的。Flash Builder我没有玩过不清楚。

 回复 引用 查看   
#56楼 2009-07-29 09:41 | Mayou      
FluorineFx是不是免费使用的?
如果脱离FluorineFx.net框架,C#.net本身跟Flex交互操作的方法LZ能不能介绍一下啊?

 回复 引用 查看   
#57楼[楼主] 2009-07-29 21:20 | Bēniaǒ      
@Mayou
FluorineFx是免费开源的。不用FluorineFx的话你可以使用WebServie或者是ASP.NET(aspx/ashx等)来做通信接口,一样的可以实现与flex/flash交互。

 回复 引用 查看   
#58楼 2009-07-30 14:57 | Mayou      
@Bēniaǒ
[使用WebServie或者是ASP.NET(aspx/ashx等)来做通信接口]这块比较迷糊,能不能讲的详细一点,或者有什么Sample可以借鉴么。谢谢!

 回复 引用 查看   
#59楼[楼主] 2009-07-31 02:57 | Bēniaǒ      
@Mayou
你可以查看下之前我写的HTTPService相关的文章。也可以到网上搜索下这方面的文章,他们都是通过web程序(asp,pho,jsp,aspx等来提供通信接口的)。

 回复 引用 查看   
#60楼 2009-08-28 18:26 | iamaarchitecter[未注册用户]
想楼主求助

如果FluorineFx 服务另一个人在另一台机器上开发的
那新建Flex 项目的时候,Web Application Root应该怎么填写?

 回复 引用   
#61楼 2009-08-30 11:55 | 笨鸟不笨[未注册用户]
不管是Flex Builder3还是Flash Buider4,加入endpoint属性,一般都能解决连不上的问题。
-----------------------------------------------
<mx:RemoteObject id="service" destination="fluorine" source="FluorineFxTest1.Sample" endpoint="http://localhost:1677/FluorineFxWeb/Gateway.aspx">
<mx:method name="Echo" result="onResult(event)">
</mx:method>
</mx:RemoteObject>
--------------------------------------------------

 回复 引用   
#62楼[楼主] 2009-08-31 17:36 | Bēniaǒ      
@iamaarchitecter
完全可以不填写,直接建立一个web上运行的项目,什么都不配置都可以。

 回复 引用 查看   
#63楼 2009-09-03 15:45 | 农民伯伯      
感激不尽,成功了!
 回复 引用 查看   
#64楼 2009-09-04 10:28 | iamaarchitecter[未注册用户]
谢谢楼主
 回复 引用   
#65楼[楼主] 2009-09-04 12:55 | Bēniaǒ      
@农民伯伯
其实在开发中是可以 不配置环境结合的。

 回复 引用 查看   
#66楼 2009-09-04 13:27 | 农民伯伯      
把Flex Builder 和VS 按文中配套结合使用成功了,但是遇到一个郁闷的问题,就是通过通过http的形式访问的话 会被缓存掉 结果是改一点东西测试下 然后清空下缓存 非常麻烦而且没法调试 不知道这种 FluorineFx网关实现远程访问 有没有更好的办法,准备放弃并参照您的这系列的第十四篇(AMF)文章来应用。
 回复 引用 查看   
#67楼 2009-09-04 13:33 | 农民伯伯      
问题解决了,多谢 笨鸟不笨
加上 endpoint="http://localhost:1677/FluorineFxWeb/Gateway.aspx"

这样既可以满足调试又能不被缓存 :)

楼主所说的不配置环境结合是指不配置Flex和IIS这中结合吧?只要将Flex的相对路径指定到Web的绝对路径就行了对吧?

 回复 引用 查看   
#68楼 2009-09-04 16:20 | 牛啊牛      
很好,第一课实验成功了,楼主多发几个给大家学习呀
 回复 引用 查看   
#69楼 2009-09-07 08:21 | YUER123[未注册用户]
程序运行到FluorineFx的控制台,不能展開左边项目的Services节点.
很怪異,不知道是為什麽

 回复 引用   
#70楼[楼主] 2009-09-07 12:53 | Bēniaǒ      
@农民伯伯
是的,很多朋友问我我也是叫他们放弃这种方式。
通信接口只负责通信
Flex只是一个客户端应用,他只要知道通信接口,调用通信接口就实现通信。
完全没有必要把他两个耦合的设计在一起,说简单点Flex就只需要一个通信地址而已。

 回复 引用 查看   
#71楼[楼主] 2009-09-07 12:53 | Bēniaǒ      
@牛啊牛
大家一起学习。

 回复 引用 查看   
#72楼[楼主] 2009-09-07 12:54 | Bēniaǒ      
@YUER123
你的服务类是不是没有添加RemotingServiceAttribute标记。

 回复 引用 查看   
#73楼 2009-09-30 10:15 | 灰包蛋儿      
引用Bēniaǒ:@DU DU
<br/>真怀疑这是不是真正的"DUDU",园里好象一直就有些人喜欢做怪装B.
<br/>如果别人曾经发过就不能在发了,那我试问下你,园里的WCF、银光、AJAX、MVC、设计模式等等一系列的文章不一样也是有人在N多年前就发过的吗?
<br/>
<br/>更何况我在这篇文章中的内容貌似和别人所发的有些不一样,我想对别人还是有一定的帮助作用的。

太有用了!

 回复 引用 查看   
#74楼 2009-10-16 16:34 | 道德[未注册用户]
我是新学者蛤,按照lz的方法完全复制了一遍,前面的东西都很正常——项目,网站都可以建立,并且能够调试出来,flex上也可以连接,就是在最后的那个实例中无法实现数据的连接,输入数字后点击没有反应,希望lz大人能不吝赐教蛤,谢谢了~~
 回复 引用   
#75楼 2009-10-19 14:44 | Jai[未注册用户]
[RPC Fault faultString="[MessagingError message='Destination 'fluorine' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'fluorine'"]
我的报这个错,是怎么回事啊?
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<!-- <legacy-collection>true</legacy-collection> -->
</properties>
</channel-definition>
<!--
<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:2037" class="flex.messaging.endpoints.RTMPEndpoint"/>
<properties>
<idle-timeout-minutes>20</idle-timeout-minutes>
</properties>
</channel-definition>
-->
</channels>

 回复 引用   
#76楼[楼主] 2009-10-21 10:12 | Bēniaǒ      
@Jai
通信通道配置错误。

 回复 引用 查看   
#77楼 2009-10-29 22:50 | 鬼手如冰      
LZ 为什么我装了FluorineFx 后 在VS2008中新建项目的时候只有FluorineFx serviceLibrary模板,却没有FluorineFx ASP.NET Web Application 模板,如果没有FluorineFx ASP.NET Web Application模板该怎么手动配置?
 回复 引用 查看   
#78楼[楼主] 2009-11-03 09:50 | Bēniaǒ      
@鬼手如冰
只有Fluorinefx网站。

 回复 引用 查看   
#79楼 2009-11-05 20:44 | lostsailboard[未注册用户]
楼主你在文章中说“-services的配置也可以设置为相对路径”,请问应该如何配置相对路径?我试了很多次都不行,谢谢
 回复 引用   
#80楼[楼主] 2009-11-06 09:59 | Bēniaǒ      
@lostsailboard
相对地址也就是基于本项目的相对地址。其实这一步是完全可以不做的 。
Flex与.NET的集成开发没有与Java那么麻烦,一个客户端,一个服务器,服务端提供通信服务接口或网关,客户端通过接口或网关地址调用就OK了,可以说是两个完全独立的东西。

最简单就是直接建立一个Flex项目做,什么都不配置。

 回复 引用 查看   
#81楼 2009-12-07 11:06 | xjjxsf8183      
如何部署啊????
我用楼主的方法做了一个FLex和asp.net交互的页面。但部署的时候,我只想把这个页面当成我网站的一个子目录。且这个页面是要和网站其它页面相互能链接上的。
也许我说不大清楚,楼主看到单独联系一下,给点指导吧!?!?!!?

 回复 引用 查看   
#82楼 2009-12-08 20:41 | dongjin[未注册用户]
public function GetDataHandle(e:ResultEvent):void
{
//获得的数据绑定至DataGrid组件
trace(e);
trace(e.result);
trace(e.result.tables);
dg.dataProvider=e.result.tables.serverInfo.initialData as Array;
}
服务器端返回的是一个DataSet,插入数据没问题,就是读取出错
结果:
[ResultEvent messageId="c26c561e-98c6-4d94-a215-d6eb755f1d43" type="result" bubbles=false cancelable=true eventPhase=2]
TypeError: Error #1010: 术语尚未定义,并且无任何属性。
[object Object]
undefined
报错:
at test6/GetDataHandle()[E:\html\flash_net\FWeb\test6\src\test6.mxml:56]
at test6/___test6_Operation2_result()[E:\html\flash_net\FWeb\test6\src\test6.mxml:17]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractOperation.as:198]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193]
at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43]
at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
at NetConnectionMessageResponder/resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:515]
at mx.messaging::MessageResponder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:199]

 回复 引用   
#83楼[楼主] 2009-12-09 00:27 | Bēniaǒ      
@dongjin
你调试跟踪下程序看看。

 回复 引用 查看   
#84楼[楼主] 2009-12-09 00:30 | Bēniaǒ      
@xjjxsf8183
我也没做过你所说的那种需求,你把子目录也部署在IIS上应该是可以的,具体的交互这个不知道你具体做什么我也答复不了你。

 回复 引用 查看   
#85楼 2010-02-14 18:09 | jonkiky      
引用qintianxu:描述 资源 路径 位置 类型
<br/>unable to open 'D:\Program Files\Adobe\Flash Builder Beta\sdks\4.0.0\frameworks\locale\en_US-services E:\fluorinefx3\WEB-INF\flex\services-config.xml' 请问楼主这是这个是哪里错了啊?

同样的问题 试了很多次 还是出错... 这到底是什么问题呢!

 回复 引用 查看   
#86楼 2010-02-16 21:12 | jonkiky      
unable to open 'D:\Program Files\Adobe\Flash Builder Beta\sdks\4.0.0\frameworks\locale\en_US-services E:\fluorinefx3\WEB-INF\flex\services-config.xml'
 回复 引用 查看   
#87楼 2010-02-16 21:14 | jonkiky      
unable to open 'D:\Program Files\Adobe\Flash Builder Beta\sdks\4.0.0\frameworks\locale\en_US-services E:\fluorinefx3\WEB-INF\flex\services-config.xml' 我解决这个问题的方法是 把-services跟locale的位置换一下,-services“E:\fluorinefx3\WEB-INF\flex\services-config.xml" locale en_US 这样就OK了 就没有错误了。 我想这 可能是Flex的问题吧

 回复 引用 查看   
#88楼[楼主] 2010-02-22 08:33 | Bēniaǒ      
@jonkiky
恩,使用Fluorinefx的过程这这个文件可以不用设置环境的,你看后面的文章就知道,直接建立项目就OK了。

 回复 引用 查看   
#89楼 2010-03-31 11:14 | lhjhl      
楼主写得真好,向你致敬
 回复 引用 查看   
#90楼[楼主] 2010-03-31 13:07 | Bēniaǒ      
@lhjhl
:)谢谢支持,一起学习。

 回复 引用 查看   
#91楼 2010-04-15 12:40 | 哈她      
请问楼主
有办法透过Fluorine把vc6编译成的dll给flex使用吗?
意思就是有办法用flex呼叫vc6建立的dll吗?
Fluorine有这样的功能吗?
感激!

 回复 引用 查看   
#92楼[楼主] 2010-04-15 13:11 | Bēniaǒ      
@哈她
只要C#能够调用到你的VC6的库,就可以通过Fluorinefx发布服务给flex调用。
当然这里面可能会出现很多问题,就只有靠你自己去处理了,我没试验过,你可以去试验下。

 回复 引用 查看   
#93楼 2010-06-25 09:44 | hpp程序员      
对这个问题苦闷了好久, 今天终于知道答案了
感谢楼主分享

 回复 引用 查看   
#94楼[楼主] 2010-06-26 16:00 | Bēniaǒ      
@hpp程序员
:)

 回复 引用 查看   
#95楼 2010-07-15 15:26 | 菩提树下的杨过      
FluorineFx貌似在vs2010下不能使用,楼主有解决办法么?难不成就为了用这个,让我再把vs2008安装回去?
 回复 引用 查看   
#96楼 2010-09-14 13:51 | 医疗行业打头兵      
楼主你好:
我flex4怎么配置,可以写个教程么????

我flex4按照这个通信怎么配置都不通

 回复 引用 查看   
#97楼[楼主] 2010-09-14 23:00 | Bēniaǒ      
@菩提树下的杨过
可以用的。

 回复 引用 查看   
#98楼[楼主] 2010-09-14 23:00 | Bēniaǒ      
@医疗行业打头兵
请仔细看上面的评论内容,实际上是可以不用配置的。

 回复 引用 查看   
#99楼 2010-09-16 10:04 | 医疗行业打头兵      
@Bēniaǒ
谢谢楼主,成功了~~~~

 回复 引用 查看   
#100楼 2010-09-19 18:16 | Asharp      
@听棠.NET
用Flex buider3也是出现同样的问题。

已经设置了Flex Server的Content Root。
——————————————————
配置到网站是ok,配置到虚拟目录就出错了…

 回复 引用 查看   
#101楼[楼主] 2010-09-21 09:01 | Bēniaǒ      
@Asharp
什么都不配置是最好的选择。

 回复 引用 查看   
#102楼 2010-10-25 14:29 | 会长      
需要把asp.net网站发布到iis后才能新建flex项目吗?谢谢
 回复 引用 查看   
#103楼 2010-10-25 15:17 | 会长      
楼主,不用回答我的问题了,已经解决了。。不知道为什么,重新弄了一遍就好了。我用的flash builder。。
 回复 引用 查看   
#104楼 2010-10-26 17:54 | 会长      
楼主,我发布iis上就不好用了。网页可以打开,但是点击按钮,不能得到返回值。我的环境是windows 7 + iis7。我试了一下gateway.aspx那个页能访问。但是Fluorine.aspx页无法访问,提示没有资源,是不是这个原因导致的呀。。另外,console.aspx里的有行代码: Response.Redirect("Fluorine.aspx");,可是我并没有发现Fluorine.aspx在哪里呀。。刚接触asp.net,挺晕。
 回复 引用 查看   
#105楼 2010-10-26 18:05 | 会长      
楼主,我的配置文件都是默认的,没有修改。没有iis前,调式时只有加上 endpoint="http://localhost:3033/Web/Gateway.aspx这句才可以。这个现象是不是表明我配置文件有问题。。O(∩_∩)O哈哈~
 回复 引用 查看   
#106楼 2010-10-28 13:59 | kingis      
@听棠.NET
你好
我遇到了同你一样的问题,请问你是怎么解决的啊?

 回复 引用 查看   
#107楼 2010-12-09 18:04 | 风net      
我用FLEX4.0按这样的配置,好像总是出错,不知道flex3 跟flex4有哪些区别,期望楼主出一篇文章说说
 回复 引用 查看   
#108楼[楼主] 2010-12-10 13:15 | Bēniaǒ      
@风net
实际上是可以不做任何配置的,Flex客户端只关心的是远端服务是否存在,是否能够正常访问,对于远端服务来说只需要正常的部署成功运行就OK了。
开发中不需要进行环境配置,配置了反而会给部署带来麻烦。

 回复 引用 查看   
#109楼 2010-12-13 12:24 | iImax      
楼主,我按照您的步骤也出现了 RPC Fault faultString="[MessagingError message='Destination 'fluorine' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']" faultCode="InvokeFailed" faultDetail="Couldn't establish a connection to 'fluorine'"] 的问题,您说了是RMTP协议配置有问题 但是我不知道怎么配置 在哪儿配置? 可不可以给个demo下载 或者细说一些? 不甚感激
 回复 引用 查看   
#110楼[楼主] 2010-12-13 13:29 | Bēniaǒ      
@iImax
服务器上的Services-config.xml里配置项为如下:
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://{server.name}:{server.port}/{context.root}/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<!-- <legacy-collection>true</legacy-collection> -->
</properties>
</channel-definition>
<!--
<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:2037" class="flex.messaging.endpoints.RTMPEndpoint"/>
<properties>
<idle-timeout-minutes>20</idle-timeout-minutes>
</properties>
</channel-definition>
-->
</channels>


 回复 引用 查看   
#111楼 2010-12-13 19:46 | iImax      
@Bēniaǒ
非常感谢楼主,回复很及时。我下午自己改xml文件发现 是由于现在FluorineFx默认的channel是 my-amf。所以一直失败。

 回复 引用 查看   
#112楼 2010-12-14 17:14 | fdming      
刚接触flex,我看了上面的操作,不知道每一步是干什么的。
我做完了,就出这个错误了。
RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://localhost:2708/Gateway.aspx'"]
这个要怎么解决?
我想我的服务器是成功的,就是flex这边访问出的问题
楼主说,不用配置环境,意思是不是,可以不用把flex 的项目建到和VS的一个目录里? 然后在flex里建个Services-config.xml然后在编译器里指定?

 回复 引用 查看   
#113楼 2010-12-15 10:41 | fdming      
自己慢慢 搞好了。 把服务端建好后,要把flex项目建到和VS项目一个目录,也不用怎么配置flex(IIS还要指定的)然后在mxml中调用就行了。。 <mx:RemoteObject id="service" destination="fluorine" endpoint="http://localhost:2708/Web/Gateway.aspx"
source="MySample" showBusyCursor="true" >
<mx:method name="Add" result="onResult(event)" fault="onFault(event)">
</mx:method>
</mx:RemoteObject>
这个就是服务端和客户端在一起,有没有什么方法,把他们分开。

谢谢,我搞好了。分开也行

 回复 引用 查看   
#114楼[楼主] 2010-12-16 22:08 | Bēniaǒ      
@fdming
在开发中不用建立配置环境的意思就是:
1、服务器端就直接使用Fluorinefx开发即可,正常提供网关接口。
2、客户端的flex只需要知道网关接口地址就可以访问。
3、这种方式更能体现出松散耦合。

 回复 引用 查看   
#115楼 2010-12-22 16:37 | yogurtice22yogadance      
楼主,请问,我用ApplicationAdapter 进行实时通讯,那么怎么样在方法public override bool AppConnect(IConnection connection, object[] parameters)中,获取客户端的IP呢?
 回复 引用 查看   
#116楼 2010-12-22 16:37 | yogurtice22yogadance      
楼主,请问,我用ApplicationAdapter 进行实时通讯,那么怎么样在方法public override bool AppConnect(IConnection connection, object[] parameters)中,获取客户端的IP呢?

 回复 引用 查看   
#117楼[楼主] 2010-12-23 12:31 | Bēniaǒ      
@yogurtice22yogadance
public override bool AppConnect(IConnection connection, object[] parameters)中获取客户端的IP我没做过,服务器端应该是不好使的,你试试在客户端获取到IP然后通过参数给传递过去。

 回复 引用 查看   
#118楼 2011-01-13 13:17 | 埃斯利      
看到这个真是高兴了,一直困扰自己的问题快解决了!
 回复 引用 查看   
#119楼[楼主] 2011-01-13 13:27 | Bēniaǒ      
@埃斯利
引用埃斯利:看到这个真是高兴了,一直困扰自己的问题快解决了!

虾米问题?

 回复 引用 查看   
#120楼 2011-03-14 20:21 | 大侠酷裤马路      
我按照楼主的方法在flex3上面可以完全正确显示想要的结果,但是flex4按照部署的方式配置却不行,于是采取了不部署的方式进行配置,将配置文件引入flex4项目中,可以正确浏览~~
 回复 引用 查看   
#121楼 2011-04-21 10:12 | linyugeng      
引用菩提树下的杨过:FluorineFx貌似在vs2010下不能使用,楼主有解决办法么?难不成就为了用这个,让我再把vs2008安装回去?

我也是这个问题,请楼主解答一下

 回复 引用 查看   
#122楼 2011-04-21 10:59 | 菩提树下的杨过      
引用linyugeng:
引用菩提树下的杨过:FluorineFx貌似在vs2010下不能使用,楼主有解决办法么?难不成就为了用这个,让我再把vs2008安装回去?

我也是这个问题,请楼主解答一下

直接引用fluorineFx对应的dll就行了,然后再手动添加相应的配置文件,vs2010下只是没有模板而已,并不影响开发,你看下自带的那几个Sample就明白了

 回复 引用 查看   
#123楼 2011-04-23 20:04 | dfssdfdsffffffffff[未注册用户]
引用fdming:
刚接触flex,我看了上面的操作,不知道每一步是干什么的。
我做完了,就出这个错误了。
RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://localhost:2708/Gateway.aspx'"]
这个要怎么解决?
我想我的服务器是成功的,就是flex这边访问出的问题
楼主说,不用配置环境,意思是不是,可以...


我也是这个问题,用的是Flex4,楼主能提一个好的解决方法吗,谢谢

 回复 引用   
#124楼[楼主] 2011-05-13 16:32 | Bēniaǒ      
@linyugeng
直接引用fluorineFx对应的dll就行了,然后再手动添加相应的配置文件,vs2010下只是没有模板而已,并不影响开发.

 回复 引用 查看   
#125楼[楼主] 2011-05-13 16:32 | Bēniaǒ      
@dfssdfdsffffffffff
:)路径对头就应该不会出错的。

 回复 引用 查看   
#126楼 2011-06-29 22:18 | Encoding      
支持楼主,对于新手来说,这些内容确实受益匪浅。
 回复 引用 查看   
#127楼 2011-06-29 22:43 | Encoding      
楼主真乃神人啊。
在测试当中发现在所有问题均在回复中找到回复。
第一课成功。谢谢楼主。

 回复 引用 查看   
#128楼[楼主] 2011-07-10 16:15 | Bēniaǒ      
@Encoding
引用Encoding:
楼主真乃神人啊。
在测试当中发现在所有问题均在回复中找到回复。
第一课成功。谢谢楼主。

谢谢支持。

 回复 引用 查看   
#129楼 2011-07-14 15:10 | 无邪兮      
谢谢LZ分享
 回复 引用 查看   
#130楼 2011-09-16 10:42 | xixiggyy      
楼主你好啊,我想请教你一个问题,现在我做的东西在内网访问是没有问题,但是在外网就是无法连接上.
swf.setServerUrl("rtmp://192.168.86.228:1935/SEE");我是这么设置的。
services-config.xml这里面也是按照默认写的。请问下需要哪些地方注意的呢?

 回复 引用 查看   
#131楼 2011-09-18 12:23 | silen_one      
楼主你好 ,54楼的问题怎么解决啊
 回复 引用 查看   
#132楼 2011-09-18 12:24 | silen_one      
[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:2913/Gateway.aspx'"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:345]
at mx.rpc::Responder/fault()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\Responder.as:68]
at mx.rpc::AsyncRequest/fault()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:113]
at mx.messaging::ChannelSet/faultPendingSends()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1619]
at mx.messaging::ChannelSet/channelFaultHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1209]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.messaging::Channel/connectFailed()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\Channel.as:1117]
at mx.messaging.channels::PollingChannel/connectFailed()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\channels\PollingChannel.as:435]
at mx.messaging.channels::AMFChannel/statusHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:453]

 回复 引用 查看   
#133楼 2011-11-13 11:42 | 阿西5945      
我说一下,我遇到的问题。一开始也是报“does not define any default channels”,后来看46楼楼主说“你有没有启用默认的RTMP协议通信通道啊!在配置文件里的.”我一看难道因为rtmp被注释了(参照110楼),我把rtmp的注释去掉了,结果就报54楼的错误。之后又在mxml添加了 endpoint属性,还不行。终于我想楼主说的默认RTMP协议通信通道是在哪儿设的怎么没看见。原来在data-management-config.xml里,有这么一段
<default-channels>
<channel ref="my-rtmp"/>
</default-channels>
只要改成
<default-channels>
<channel ref="my-my-amf"/>
</default-channels>
就是110楼那段没被注释的个channel设为默认的就可以了。
以上就是我解决问题的过程,希望对大家有所帮助。

 回复 引用 查看   
#134楼[楼主] 2011-11-18 23:36 | Bēniaǒ      
@阿西5945
引用阿西5945:
我说一下,我遇到的问题。一开始也是报“does not define any default channels”,后来看46楼楼主说“你有没有启用默认的RTMP协议通信通道啊!在配置文件里的.”我一看难道因为rtmp被注释了(参照[url=http://www.cnblogs.com/beniao/archive/2009/01/19/1375086.html?login=1#1986151]110楼[...


感谢分享。

 回复 引用 查看   
#135楼 2011-11-24 15:32 | 水中蕓[未注册用户]
[RPC Fault faultString="发送失败" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost/Gateway.aspx'"]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:345]
at mx.rpc::Responder/fault()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:68]
at mx.rpc::AsyncRequest/fault()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:113]
at mx.messaging::ChannelSet/faultPendingSends()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1614]
at mx.messaging::ChannelSet/channelFaultHandler()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1206]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.messaging::Channel/connectFailed()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\Channel.as:1128]
at mx.messaging.channels::PollingChannel/connectFailed()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\channels\PollingChannel.as:406]
at mx.messaging.channels::AMFChannel/statusHandler()[E:\dev\4.0.0\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:453]

 回复 引用   
#136楼 2011-11-24 15:33 | 水中蕓[未注册用户]
http://localhost/Gateway.aspx

这个地址有误,应该是 http://localhost/testfu/Gateway.aspx
请问怎么改这个地址?

 回复 引用   
#137楼 2011-11-24 15:47 | 水中蕓[未注册用户]
已解决,配置改成
<endpoint uri="http://{server.name}:{server.port}/testfu/Gateway.aspx" class="flex.messaging.endpoints.AMFEndpoint"/>

 回复 引用   
#138楼 2011-12-21 21:58 | 纪兆鹤      
@听棠.NET
你好,我遇到的问题跟你一样,请问你现在找到了除不加endpoint的解决办法了吗?我也用的flex4.0+vs2008

 回复 引用 查看   
#139楼 2011-12-23 11:49 | 纪兆鹤      
@阿西5945
请问有没有flex4.0下不用endpoint的解决办法啊,楼主的方法里是不用endpoint的。我是在flex4.0+vs2008下弄的,配置的和楼主的都一样结果还是连不通,说未配置通道。如果加上endpoint的话就可以了,其他的不要动

 回复 引用 查看   
#140楼 2011-12-26 17:29 | 继续奋斗      
楼主,建完FluorineFx 网站后,弹出错误框提示“灾难性故障”
不知道是怎么回事

 回复 引用 查看   
评论共2页: 上一页 1 2 
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1375086 RYKPT9/6uCU=
微软最有价值专家(MVP)

微软技术社区精英(CNTAC)

2010年IT博客大赛50强

微软最有影响力开发者(GDI)


Bing Maps开发一群:75662563
微软技术群-重庆站:97035589
RIA技术联盟QQ群:26917590
昵称:Bēniaǒ
园龄:4年6个月
荣誉:推荐博客
粉丝:408
关注:26

随笔分类(285)

文章分类(14)

积分与排名

  • 积分 - 760874
  • 排名 - 60

最新评论