Remoting & events
От: Аноним  
Дата: 03.10.06 11:07
Оценка:
Фреймворк 1.1

Два приложения winforms. Связываются через интерфейс, определенный в отдельной сборке, на которую оба имеют референс. Клиент вызывает методы сервера без проблем. Но в момент подписки на событие сервера (+=) получаем такую ошибку:

An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in mscorlib.dll
Additional information: Cannot find the assembly ClientTestUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

где ClientTestUI — это имя сборки клиента (ехе-шника).

В событии передается 1 ArrayList, никаких кастом типов.
Клиент и сервер находятся в разных каталогах.
Ремоутинг конфигурируется в коде.

Сервер:

BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = 32000;
TcpChannel channel = new TcpChannel(props, clientProv, serverProv);        
ChannelServices.RegisterChannel(channel);

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteServer), "Server", 
    WellKnownObjectMode.Singleton);


Клиент:

BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = 0;
TcpChannel channel = new TcpChannel(props, clientProv, serverProv);        
ChannelServices.RegisterChannel(channel);
        
_server = (IRemoteServer) Activator.GetObject(typeof (IRenoteServer), "tcp://localhost:32000/Server");
_server.OnUpdate += new UpdateEventHandler(Server_Update); // вот тут мы и валимся


Как это дело бороть?
Re: Remoting & events
От: vitz  
Дата: 03.10.06 12:12
Оценка:
Здравствуйте, Аноним, Вы писали:

ServerShinkProvider.TypeFilterLevel = TypeFilterLevel.Full;
помогало...
Re: Remoting & events
От: GOre01 Россия  
Дата: 03.10.06 18:06
Оценка:
А>Сервер:

А>
А>BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
А>serverProv.TypeFilterLevel = TypeFilterLevel.Full;
А>BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
А>IDictionary props = new Hashtable();
А>props["port"] = 32000;
А>TcpChannel channel = new TcpChannel(props, clientProv, serverProv);        
А>ChannelServices.RegisterChannel(channel);

А>RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteServer), "Server", 
А>    WellKnownObjectMode.Singleton);
А>


А>Клиент:


А>
А>BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
А>serverProv.TypeFilterLevel = TypeFilterLevel.Full;
А>BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
А>IDictionary props = new Hashtable();
А>props["port"] = 0;
А>TcpChannel channel = new TcpChannel(props, clientProv, serverProv);        
А>ChannelServices.RegisterChannel(channel);
        
А>_server = (IRemoteServer) Activator.GetObject(typeof (IRenoteServer), "tcp://localhost:32000/Server");
А>_server.OnUpdate += new UpdateEventHandler(Server_Update); // вот тут мы и валимся
А>


А>Как это дело бороть?


Я борол тем, что клиента наследовал от MarshalByRefObject, Если метод Server_Update принадлежит форме, надо придумать какой-нибудь враппер для сервера
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.