У нас возникла проблема с новой (асинхронной) версией Rebus, которой не было в старой версии.
При обработке сообщения rebus и попытке создать AppDomain и Instance для динамического запуска кода плагина он всегда выдает исключение. Чтобы сделать пример максимально простым, я сделал тестовый метод:
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.Transport.DefaultTransactionContext в сборке Rebus, Версия = 1.0.0.0, Культура = нейтральный, PublicKeyToken = null не помечен как сериализуемый . Source = mscorlib StackTrace: в System.AppDomain.CreateInstanceAndUnwrap (String assemblyName, String typeName) в App.Bus.MessageParse.Process.Test () в d: \ Project \ App.Bus.MessageParser \ Process.cs: строка 45 в приложении .Bus.MessageParse.Process.d__0.MoveNext () в d: \ Project \ App.Bus.MessageParser \ Process.cs: строка 28 InnerException:
Есть идеи о проблеме?