如何在.NET Remoting中远程事件?

时间:2011-09-30 10:05:37

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

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

    //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)不允许在此安全级别反序列化。

我做错了什么?

1 个答案:

答案 0 :(得分:6)

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