powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Передача данных от WCF сервиса в потоке. Exception: "Unable to find assembly"
1 сообщений из 1, страница 1 из 1
Передача данных от WCF сервиса в потоке. Exception: "Unable to find assembly"
    #36117577
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня.
При передаче данных от WCF сервиса в потоке через BinaryFormatter, при десериализации на клиенте получаю эксепшн "Unable to find assembly".

на сервисе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
[ServiceContract]
    public interface IP
    {
        [OperationContract]
        Stream get_o();
    }

public class P : IP
    {
        public Stream get_o()
        {
            MemoryStream stream = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            using (EntityModelContainer context = new EntityModelContainer())
            {
                formatter.Serialize(stream, context.t_O.ToArray());
                stream.Seek(0, SeekOrigin.Begin);
                return stream;
            }
        }
    }

на клиенте:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
using (PClient proxy = new PClient())
    {
        Stream stream = proxy.get_o();
        BinaryFormatter formatter = new BinaryFormatter();
        t_O[] oList = (t_O[])(formatter.Deserialize(stream));
        this.dataGridView.DataSource = oList;
    }

Если кто сталкивался подскажите решение...
В гугле нашёл только предложение переопределять BindToType как то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
sealed class DeserializationBinder : SerializationBinder
    {
        public override Type BindToType(string assemblyName, string typeName)
        {
            Type typeToDeserialize = null;
            String currentAssembly = Assembly.GetExecutingAssembly().FullName;
            assemblyName = currentAssembly;
            typeToDeserialize = Type.GetType(String.Format("{0}, {1}", typeName, assemblyName));
            return typeToDeserialize;
        }
    }  
но как получить на клиенте этот DeserializationBinder для инициализации форматтера типа так
Код: plaintext
1.
2.
3.
4.
BinaryFormatter formatter = new BinaryFormatter()
    {
        Binder = new DeserializationBinder()
    };
не догоняю :(

--------------------------------------------------------------
Дьявол кроется в деталях.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Передача данных от WCF сервиса в потоке. Exception: "Unable to find assembly"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]