在程序代码中集成跨域服务文件

由于silverlight跨域文件在很多分布式应用开发中非常常用,其中一些简单的应用中并不须要在程序发布后让用户来动态配置跨域的xml文件,这样程序目录中又要多出一个xml的跨域文件这样显得没什么必要而且增加了发布的复杂性,所以我通过如下方法实现了在程序中直接让跨域文件集成在代码中。

我在启动跨域服务的同时,把跨域文件的定义也集成到代码中了。你也可以通过一些自定义的程序功能去动态地成生跨域文件的动态性。这样一样可以达到让用户去配置跨域规则的功能。而且不用再带着那个clientaccesspolicy.xml文件。呵呵。。

以下是我在启动跨域服务时的代码:

 1:          //本?文?源′创′地?址·:http://funsl.com
 2:          internal void StartupPolicyServer(int maxOnlines)
 3:          {
 4:              _policyBuffer = new byte[371];
 5:              Stream str = new MemoryStream(System.Text.ASCIIEncoding.Default.GetBytes(
 6:  @"<?xml version=""1.0"" encoding =""utf-8""?>
 7:  <access-policy>
 8:    <cross-domain-access>
 9:          <policy>
10:              <allow-from>
11:                  <domain uri=""*"" />
12:              </allow-from>
13:              <grant-to>
14:                  <socket-resource port=""4502-4534"" protocol=""tcp"" />
15:              </grant-to>
16:          </policy>
17:      </cross-domain-access>
18:  </access-policy>"));
19:              //本?文?源′创′地?址·:http://funsl.com
20:              str.Read(_policyBuffer, 0, _policyBuffer.Length);
21:  
22:              _listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
23:              _listener.Bind(new IPEndPoint(IPAddress.Any, 943));
24:              _listener.Listen(maxOnlines);
25:  
26:              _listener.BeginAccept(new AsyncCallback(OnClientConnect), null);
27:          }
28:  

然后通过以下代码启动:

1:  //本?文?原-创′地?址·:http://funsl.com
2:  jacSocket.crossDomain cd = new jacSocket.crossDomain();
3:  cd.StartupPolicyServer(200);
4:  

其中StartupPolicyServer()的参数为跨域服务接爱最大接入客户端数量,请按你的实际情况填写。

posted @   黎东海  阅读(207)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示