正在做一个程序,用到了.net Remoting,远程发布一个组件,不加事件委托时一切正常,想加一个事件委托,先后遇到了“在此安全级别上被反序列化”和“无法找到程序集”的异常,在网上找解决方法,分别用“设置TypeFilterLevel.Full”和“将客户端程序集拷贝到服务器端”的方法消除了这两个异常。可紧接着出现的异常叫人摸不着头脑:未处理的“System.Runtime.Serialization.SerializationException”类型的异常出现在 mscorlib.dll 中。其他信息: 序列化不会反序列化非公共方法的委托。我的委托明明是public的呀:
public class Controller : MarshalByRefObject
{
public delegate void SendCommand(string command);
public event SendCommand TheSender;下面是服务器发布代码:
BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = port;
chan = new TcpChannel(props, clientProv, serverProv);
ChannelServices.RegisterChannel(chan);
chan.StartListening(null);
string url = "LynxEyes";
            serverobjRef = RemotingServices.Marshal(cl, url);下面是客户端代码:(用VB.net写的)
Dim url As String
url = FrmLogin.GetServerUrl()
serverobj = CType(RemotingServices.Connect(GetType(Controller), url, Nothing), Controller)
MyUser = serverobj.GetUserInfo(MyUser.UserID)
AddHandler serverobj.TheSender, AddressOf GetCommand
异常就出现在AddHandler 一句。
其中Controller远程发布的类。如何解决“序列化不会反序列化非公共方法的委托”呢?