Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > Flash Remoting For .Net 的跨域连接问题解决~
【标  题】:Flash Remoting For .Net 的跨域连接问题解决~
【关键字】:Flash,Remoting,For,.Net
【来  源】:http://yao.cnblogs.com/archive/2006/06/14/426005.html

Flash Remoting For .Net 的跨域连接问题解决~

Your Ad Here


    关于Flash Remoting 跨域问题,今天折腾了半天,终于有了进展。

    假设Remoting Service在DomainA.com上,而一个swf发布在DomainB.com上,现在DomainB.com上的swf要连接DomainA的Remoting Service,现在就是跨域的Remoting连接了。

    Flash Remoting与.Net的Remoting不同,.Net可以使用TCP或HTTP协议的传输信道,而Flash Remoting只能使用HTTP协议的传输信道,在Flash Player 5或更早版本的播放器中,跨域或子域访问不受限制,在Flash Player 7播放器中,播放器执行精确域匹配而不是超域匹配规则,即在未经允许的情形下,跨域访问是禁止的。

    在Luar站上说,“SWF文件在domainA.com,Flash Remoting Gateway在domainB.com”,domainA中的swf连接domainB的Remoting Gateway,“測試過,這個當然是不可以的”。
    看到这句时,心里着实凉了大半截~问了几个群,半下午,没有解决,后来实在没办法了问Peter,Peter说“跨域需要另外一个域的服务器添加配置文件”,再查帮助~哈哈~,果然可以通过域策略文件解决。

    Flash Remoting要实现跨域连接,需要创建一个“crossdomain.xml”的域策略文件,名称必须为“crossdomain.xml”,然后放置在DomainA(即Remoting Service服务器)的站点根目录下。
    文件内容是一个允许连接的Client端域名或IP列表,应该如:

<?xml version="1.0"?>
<cross-domain-policy>
  
<allow-access-from domain="192.168.39.209" />
  
<allow-access-from domain="*.DomainB.com" />
</cross-domain-policy>

    放置后,crossdomain.xml文件应该可以这样访问:http://domainA.com/crossdomain.xml

    好了,这样做就可以跨域连接Remoting Service了。


    下边是具体测试代码:
    1.Client端
    Client端的Swf发布在192.168.39.209。

    Swf 文件:
    场景中放置了一个txt的动态文本框,然后在第一帧加入如下代码(AS2.0写法):

import mx.remoting.Service;
import mx.rpc.RelayResponder;
import mx.remoting.PendingCall;
import mx.rpc.ResultEvent;
import mx.rpc.FaultEvent;
/*import mx.remoting.debug.NetDebug;
NetDebug.initialize();
*/

import mx.services.Log;
function sayGreeting_Result(evt:ResultEvent):Void {
 txt.text 
= evt.result;
}

function sayGreeting_Fault(evt:FaultEvent):Void {
 
//trace("Error: "+evt.fault.__faultstring);
 txt.text = evt.fault.faultstring;

}

var gatewayPath = "http://192.168.39.109/MyRemoting/gateway.aspx";
var myResponder = new RelayResponder(this"sayGreeting_Result""sayGreeting_Fault");
//var service:Service = new Service(gatewayPath, new Log(), "MyRemoting", null, myResponder);
var service:Service = new Service(gatewayPath, null"MyRemoting"null, myResponder);
var mypc:PendingCall = service.test("Yao.NET");

    2.Server端
    Remoting Service发布在192.168.39.109,IIS中创建MyRemoting虚拟目录,此目录下有gateway.aspx,web.config,test.aspx文件及Bin目录,其中Gateway.aspx,web.config文件直接从flashremoting的samples下复制过来即可。

    test.aspx文件:

<%@ Page language="c#" debug="true" %>
<%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %>
<Macromedia:Flash ID="Flash" Runat="Server" />
<%
        String message 
= "你好呀:";
        
if (Flash.Params.Count > 0)
        
{
            message 
+= Flash.Params[0].ToString();
        }


        Flash.Result 
= message;
%>

    web.config中配置:

<system.web>
<httpModules>
        
<add name="GatewayController" type="FlashGateway.Controller.GatewayController,flashgateway" />
    
</httpModules>
</system.web>


    Bin目录:
    中有flashgateway.dll,frconfig.txt,wsdl.exe(此实例中非必须)文件,前两个文件也是直接从flashremoting的samples下复制过来即可。

    ---------------------------------------
    以上代码,swf在Flash8中编写,test.aspx在vs.net 2003中编写,均测试通过。

    最后在此感谢Peter~

批判 Office 2007:【上一篇】
Ajax & XMLHttpRequset:【下一篇】
【相关文章】
  • 基于Remoting透明代理的AOP组件
  • DreamwaverMX与ASP.NET应用
  • ASlinks项目正式落户Sourceforge.net
  • Simple Test for PHP ——关于php的测试工具simple test
  • nforce 4主板网卡问题(待验证)
  • JavaScript模仿MSN的弹出窗口FLASH
  • 使用.Net编写Windows程序,对于窗体控制常见项目
  • C#下WinForm编程:登录窗体的设计
  • 搭建asp.net平台遇到的问题
  • C#里for和foreach的区别
  • 【随机文章】
  • 第2章 可控游戏类 2.4 梭 哈 游 戏(5)
  • 禁止在TextBox中输入
  • 将Windows XP自动进行到底
  • jasperReport在linux系统下x11问题的解决办法
  • ASP中存储过程调用的两种方式及比较
  • 一种不使用数据源用java直接连接数据源的方法
  • WebWork的强大的验证器
  • 教你如何学习GRUB[转]
  • 何解决呢?阳光路线2002-05-09, 03:58 PM答
  • 让带有许多zip的文件夹打开更快
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.