【问题标题】:How to remote events in .NET Remoting?如何在 .NET Remoting 中远程事件?
【发布时间】:2011-09-30 10:05:37
【问题描述】:

我有一个包含事件的远程处理类。但是,当我尝试在客户端为这些事件设置处理程序时,我收到异常。我的代码如下:

    //In common library
    class RemoteClass : MarshalByRefObject
    {
    public event EventHandler SomeEvent = null;

    public void SomeMethod () {}
    }

    //On client-side
    RemoteClass r = (RemoteClass) RemotingServer.Connect (typeof(RemoteClass), "myURL");

    r.SomeMethod (); //Everything is OK here.

    r.SomeEvent += delegate (object o, EventArgs e) { }; //Exception:Type 

System.DelegateSerializationHolder 及其派生的类型(如System.DelegateSerializationHolder)不允许在此安全级别进行反序列化。

我做错了什么?

【问题讨论】:

  • 那么,安全级别是多少?要么改变它,要么......不要使用远程处理。
  • 我对您的评论一无所知 :(

标签: c# .net events .net-remoting


【解决方案1】:

https://web.archive.org/web/20141009214120/http://msdn.microsoft.com/en-us/library/61w7kz4b(v=vs.80).aspx

在 .NET Framework 中,分布式通信(远程处理)的默认安全级别较低。这会影响将用户定义的对象类型传递给远程方法。在某些情况下,您可能需要将默认安全级别调整为完全以允许对象序列化。

如果您使用的是 ASP.Net,以下是设置安全(信任)级别的方法:

http://msdn.microsoft.com/en-us/library/ff648344.aspx

【讨论】:

  • 第一个链接现在失效了?
  • @StayOnTarget 是的,有时会发生这种情况。我用 archive.org 链接更新了它。看起来它没有获取样式表,但内容至少是可读的。我认为它或多或少只是说明了我复制粘贴到答案中的内容。
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多