.Net Remoting序列化问题

时间:2014-04-08 11:00:56

标签: c# .net serialization delegates .net-remoting

我是.Net Remoting的问题:

我们有两个应用程序,一个客户端和一个服务器。客户端可以连接到服务器并通过.Net Remoting检索配置。

我们有一个允许将我们的软件部署到客户端的设置。这个设置模糊了我们所有的代码,但我们有一个排除列表(通过命名空间和DLL),它排除了用于传输数据的所有类。

最近出现了几个月以来,我们在配置中有一个序列化的类,这是错误的。我们看到了,因为我们无法再从调试客户端连接到发布(设置)服务器。

现在的问题是:我们怎样才能找到这个课程。

例外情况如下:

System.Runtime.Serialization.SerializationException occurred
  HResult=-2146233076
  Message=Cannot get the member '<.ctor>b__5'.
  Source=mscorlib
  StackTrace:
    Server stack trace: 
       at System.Reflection.MemberInfoSerializationHolder.GetRealObject(StreamingContext context)
       at System.Runtime.Serialization.ObjectManager.ResolveObjectReference(ObjectHolder holder)
       at System.Runtime.Serialization.ObjectManager.DoFixups()

我们试着用deobfuscator看到它是什么成员,但看起来这个例外还不够完整。

我们有很多课程,遗产......我们目前无法找到哪个课程被混淆但不应该。

由于它是二进制序列化,我们无法轻易看到客户端和服务器之间传输的内容。

什么是更好的方法(修改当前代码越少)才能找到哪个是混淆类?

修改 除了dburner答案之外,我想说我已经删除了我的代表并使用了直接方法。像这样,这个名称是固定的,不应该根据编译而改变。

1 个答案:

答案 0 :(得分:2)

看一下这个问题Could we save delegates in a file (C#)

如果幸运的话,可以在同一个应用程序中对代理进行序列化和反序列化,因为它们是函数的指针,函数可以有不同的内存位置。

因为你试图在另一个应用程序中反序列化你的类,所以你会遇到奇怪的错误。