Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ActionScript 3 XMLSocket的策略文件有问题_C#_Apache Flex_Xmlsocket - Fatal编程技术网

C# ActionScript 3 XMLSocket的策略文件有问题

C# ActionScript 3 XMLSocket的策略文件有问题,c#,apache-flex,xmlsocket,C#,Apache Flex,Xmlsocket,我们已经在.NET中开发了一个定制的服务器,为我们的网站托管一些基本的聊天/即时消息功能,客户端是使用XMLSocket用Flex(AS3)编写的 现在我们有两台服务器,一台专门发送策略文件,另一台处理IM/聊天功能 问题是,我们可以看到客户端正在连接,发送了策略文件,但Flash忽略了策略文件,并从聊天室/IM服务器再次请求它 策略文件: <?xml version="1.0" encoding="UTF-8"?> <cross-domain-policy> <

我们已经在.NET中开发了一个定制的服务器,为我们的网站托管一些基本的聊天/即时消息功能,客户端是使用XMLSocket用Flex(AS3)编写的

现在我们有两台服务器,一台专门发送策略文件,另一台处理IM/聊天功能

问题是,我们可以看到客户端正在连接,发送了策略文件,但Flash忽略了策略文件,并从聊天室/IM服务器再次请求它

策略文件:

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>

跨域策略仅适用于其上的服务器。。。您不能让服务器为其他服务器提供策略。。。什么能阻止恶棍为你的机器创建策略并窃取你的数据


您需要从正确的服务器获得策略服务。

谢谢Gergor,但我的意思是我们打开了一台服务器,专门用于发送策略文件,另一台用于处理实际连接(都在同一台机器上)

问题是您需要立即发送策略文件,而无需在策略服务器上执行任何其他操作

Server.LogMessage("Policy Server: Serving policy file.");
            TcpListener listener = (TcpListener)ar.AsyncState;
            Socket client = listener.EndAcceptSocket(ar);
            NetworkStream ns = new NetworkStream(client);
            StreamReader sr = new StreamReader(ns);
            StreamWriter sw = new StreamWriter(ns);

            sr.Read();
            //Send policy
            sw.Write(Server.EncodeString(Server.xmlPolicyFile.OuterXml) + "\0");
            sw.Flush();
            ns.Flush();
            //Cleanup
            sw.Close();
            sr.Close();
            ns.Close();
            //Do it again!
            tcl.BeginAcceptSocket(AcceptCallback, tcl);