【发布时间】:2015-12-01 12:58:49
【问题描述】:
Rebus 的新(异步)版本存在问题,而旧版本不存在。
在处理 rebus 消息并尝试创建 AppDomain 和 Instance 以动态运行插件代码时,它总是给我一个异常。 为了使示例尽可能简单,我制作了一个 Test 方法:
public static void Test()
{
AppDomain ad = AppDomain.CreateDomain("Test");
Loader loader = (Loader)ad.CreateInstanceAndUnwrap(typeof(Loader).Assembly.FullName, typeof(Loader).FullName);
}
class Loader : MarshalByRefObject
{
}
当我从“正常”代码调用该方法时,它可以工作,但是当我从(异步)Rebus 消息句柄方法调用它时,它会给出异常:
System.Runtime.Serialization.SerializationException 被捕获
HResult=-2146233076 消息=类型 程序集“Rebus”中的“Rebus.Transport.DefaultTransactionContext”, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 未标记 作为可序列化的。来源=mscorlib 堆栈跟踪: 在 System.AppDomain.CreateInstanceAndUnwrap(字符串 assemblyName,字符串 typeName) 在 d:\Project\App.Bus.MessageParser\Process.cs:line 45 中的 App.Bus.MessageParse.Process.Test() 在 App.Bus.MessageParse.Process.d__0.MoveNext() 在 d:\Project\App.Bus.MessageParser\Process.cs:line 28 InnerException:
对这个问题有任何想法吗?
【问题讨论】:
标签: c# plugins appdomain rebus