如何使用Remoting跨程序传递事件( 关于Microsoft.Net Remoting 权威指南 一书第三章)

xiyun 2004-10-31 12:19:03
A B 两个程序,当B发生了特定的事件,通知到A

在 Microsoft.Net Remoting 权威指南 书的第三章有讲但运行客户端时会出安全异常,
我自己之前写的程序也是如此。不知道为什么?

如果需要看源代码 , 书中的源代码可以到微软的网站下。我的做法跟树立面的差不多
...全文
174 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
AhBian 2004-11-01
  • 打赏
  • 举报
回复

使用应用程序配置文件设置反序列化级别
若要使用配置文件设置反序列化级别,必须显式指定 <formatter> 元素的 typeFilterLevel 属性。虽然这通常是在服务器端指定的,但您还必须为注册来侦听回调的客户端上的任何信道指定这一属性,以控制其反序列化级别。以下示例为应用程序域中的 SoapFormatter 和 BinaryFormatter 显式地将反序列化级别设置为 Low。

重点警告:
千万不要在 Machine.config 这个文件中进行 Full 配置,因为这么做太不安全了。

<configuration>

<system.runtime.remoting>

<application>

<service>

<wellknown

type="ServiceType, common"

objectUri="ServiceType.soap"

mode="Singleton"

/>

</service>

<channels>

<channel ref="http">

<serverProviders>

<provider ref="wsdl" />

<formatter ref="soap" typeFilterLevel="Low" /> // Full

<formatter ref="binary" typeFilterLevel="Low" /> // Full

</serverProviders>

</channel>

</channels>

</application>

</configuration>



另外,在程序集中声明以下特性,也是有用的,具体应用场合和技巧请见 MSDN 帮助文档的相关条目。
[assembly:AllowPartiallyTrustedCallers]
xiyun 2004-11-01
  • 打赏
  • 举报
回复
未处理的“System.Security.SecurityException”类型的异常出现在 mscorlib.dll 中。

其他信息: 不允许类型 System.DelegateSerializationHolder 和从中派生的类型(例如 System.DelegateSerializationHolder)在此安全级别上被反序列化。
AhBian 2004-10-31
  • 打赏
  • 举报
回复
由于那本书写的时候是根据 .Net Framework 1.0 写的,而后来发布的 Framework 1.1 中新加入一个与 Remoting 相关的安全特性,限制了可以自动反序列化的类型。

一种解决办法是应用程序的配置文件中的 Remoting 配置节,设置 typeFilterLevel= "Full"。

另一种是在程序中使用代码设定对应的属性,示例代码如下:

BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();

// 设置类型过滤级别为 Full,也就是所有类型均可自动序列化和反序列化。
// 有关的技术细节,请见 MSDN 帮助文档中相应的条目。
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();

IDictionary props = new Hashtable();
props["port"] = XXXX;

HttpChannel chan = new HttpChannel(props, clientProv, provider);
ChannelServices.RegisterChannel( chan );
AhBian 2004-10-31
  • 打赏
  • 举报
回复
异常的详细信息是什么?
xiyun 2004-10-31
  • 打赏
  • 举报
回复
AhBian(阿扁)

好像还是不行啊

怎么还是一样的错误啊
xiyun 2004-10-31
  • 打赏
  • 举报
回复
谢谢 AhBian(阿扁)
长江 2004-10-31
  • 打赏
  • 举报
回复
B发生特定事件,在事件中连接到A,然后把代表此事件状态的对象传递给A,A接收到对象判断对象所代表的事件状态作出对应的反应
xiyun 2004-10-31
  • 打赏
  • 举报
回复
Up
wuzhijie 2004-10-31
  • 打赏
  • 举报
回复
帮你顶!

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧