Здравствуйте, ZeBeSt, Вы писали:
ZBS>"System.Runtime.Serialization.SerializationException ZBS>Не удалось найти сборку "Cds.Service.Core, Version=0.1.3014.33731, Culture=neutral"
Есть два приложения: клиент и сервер.
Для передачи данных между ними используется класс из общей сборки, класс отмечен как Serializable.
При передаче с клиента на сервер десериализация проходит нормально. А при десериализации на клиенте серверного ответа возникает ошибка:
"System.Runtime.Serialization.SerializationException
Не удалось найти сборку "Cds.Service.Core, Version=0.1.3014.33731, Culture=neutral"
И что самое непонятное: десериализация вызывается именно в этой сборке. Получается что сборка не может обнаружить сама себя.
Помогите плиз, уже второй день бьюсь над проблемой, а решить надо быстро.
Здравствуйте, ZeBeSt, Вы писали:
ZBS>Есть два приложения: клиент и сервер. ZBS>Для передачи данных между ними используется класс из общей сборки, класс отмечен как Serializable. ZBS>При передаче с клиента на сервер десериализация проходит нормально. А при десериализации на клиенте серверного ответа возникает ошибка: ZBS>"System.Runtime.Serialization.SerializationException ZBS>Не удалось найти сборку "Cds.Service.Core, Version=0.1.3014.33731, Culture=neutral" ZBS>И что самое непонятное: десериализация вызывается именно в этой сборке. Получается что сборка не может обнаружить сама себя. ZBS>Помогите плиз, уже второй день бьюсь над проблемой, а решить надо быстро.
а эта сборка, случаем, грузиться не в LoadFrom контекст? если да, то поможет подписка на AppDomain.AssemblyResolve
Re: Странная проблема с бинарной сериализацией
От:
Аноним
Дата:
03.04.08 04:57
Оценка:
Здравствуйте, ZeBeSt, Вы писали:
ZBS>Есть два приложения: клиент и сервер. ZBS>Для передачи данных между ними используется класс из общей сборки, класс отмечен как Serializable. ZBS>При передаче с клиента на сервер десериализация проходит нормально. А при десериализации на клиенте серверного ответа возникает ошибка: ZBS>"System.Runtime.Serialization.SerializationException ZBS>Не удалось найти сборку "Cds.Service.Core, Version=0.1.3014.33731, Culture=neutral" ZBS>И что самое непонятное: десериализация вызывается именно в этой сборке. Получается что сборка не может обнаружить сама себя. ZBS>Помогите плиз, уже второй день бьюсь над проблемой, а решить надо быстро.
В общем ситуация оказалась еще запутанее!
Один и тот же объект не может десериализоваться сразу после сериализации в предыдущей строке. Вот кусок кода:
private bool Request(ServicePacket query, out ServicePacket answer)
{
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, query);
stream.Position = 0;
byte[] data = stream.ToArray();
stream.Dispose();
stream = new MemoryStream(data);
ServicePacket srv = formatter.Deserialize(stream) as ServicePacket; - в этой строке возникает исключение
}
SerializaitionException — Не удалось найти сборку "Cds.Service.Core, Version=0.1.3015.17678, Culture=neutral, PublicKeyToken=null
Бред какой-то! Ничего не понимаю.
Господа, какие будут мысли?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ZeBeSt, Вы писали:
ZBS>>Есть два приложения: клиент и сервер. ZBS>>Для передачи данных между ними используется класс из общей сборки, класс отмечен как Serializable. ZBS>>При передаче с клиента на сервер десериализация проходит нормально. А при десериализации на клиенте серверного ответа возникает ошибка: ZBS>>"System.Runtime.Serialization.SerializationException ZBS>>Не удалось найти сборку "Cds.Service.Core, Version=0.1.3014.33731, Culture=neutral" ZBS>>И что самое непонятное: десериализация вызывается именно в этой сборке. Получается что сборка не может обнаружить сама себя. ZBS>>Помогите плиз, уже второй день бьюсь над проблемой, а решить надо быстро.
А>В общем ситуация оказалась еще запутанее! А>Один и тот же объект не может десериализоваться сразу после сериализации в предыдущей строке. Вот кусок кода:
А>
А>private bool Request(ServicePacket query, out ServicePacket answer)
А>{
А> BinaryFormatter formatter = new BinaryFormatter();
А> MemoryStream stream = new MemoryStream();
А> formatter.Serialize(stream, query);
А> stream.Position = 0;
А> byte[] data = stream.ToArray();
А> stream.Dispose();
А> stream = new MemoryStream(data);
А> ServicePacket srv = formatter.Deserialize(stream) as ServicePacket; - в этой строке возникает исключение
А>}
А>
А>SerializaitionException — Не удалось найти сборку "Cds.Service.Core, Version=0.1.3015.17678, Culture=neutral, PublicKeyToken=null
А>Бред какой-то! Ничего не понимаю. А>Господа, какие будут мысли?
задаю вопрос повторно, в какой контекст грузиться сборка Cds.Service.Core, Version=0.1.3015.17678, Culture=neutral, PublicKeyToken=null?
Re[2]: Странная проблема с бинарной сериализацией
От:
Аноним
Дата:
03.04.08 06:45
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Один и тот же объект не может десериализоваться сразу после сериализации в предыдущей строке. Вот кусок кода:
А ServicePacket или какой-нибудь из его членов не реализует ли кастомную сериализацию (ISerializable)?
Можно как-то на его код поглядеть?
Re[3]: Странная проблема с бинарной сериализацией
От:
Аноним
Дата:
03.04.08 06:54
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Один и тот же объект не может десериализоваться сразу после сериализации в предыдущей строке. Вот кусок кода:
А>А ServicePacket или какой-нибудь из его членов не реализует ли кастомную сериализацию (ISerializable)? А>Можно как-то на его код поглядеть?
[Serializable]
public class ServicePacket
{
public DateTime PacketTime;
public string Command;
public byte[] Data;
public ServicePacket() { }
public ServicePacket(string command, byte[] data)
{
PacketTime = DateTime.Now;
Command = command;
Data = data;
}
}
Здравствуйте, ZeBeSt, Вы писали:
ZBS>Здравствуйте, hard.disk, Вы писали:
HD>>А если перед десериализацией вставить строку Assembly.Load("полный путь к Cds.Service.Core")?
ZBS>Дело в том, что вышеприведенный код сам содержится в этой сборке
Это я понял, а ты попробуй.
На форумах МСДНа был пост со схожей проблемой.
Здравствуйте, hard.disk, Вы писали:
HD>Здравствуйте, ZeBeSt, Вы писали:
ZBS>>Здравствуйте, hard.disk, Вы писали:
HD>>>А если перед десериализацией вставить строку Assembly.Load("полный путь к Cds.Service.Core")?
ZBS>>Дело в том, что вышеприведенный код сам содержится в этой сборке HD>Это я понял, а ты попробуй. HD>На форумах МСДНа был пост со схожей проблемой.
Проблема решена !!!.
Даю описание.
Разрабатываемый модуль для отладки запускается внешним приложением.
Причем приложение и модуль находятся в разных папках. Не буду вдаваться в объяснения, но надо именно так.
Вследствие этого видимо фреймворк не может самостоятельно разрулить ситуацию и ему приходится помогать.
Волшебная таблетка заключается в следующем: