Я использую удаленное взаимодействие между клиентом и сервером, и пока оно работает, я вижу некоторое поведение, которое не понимаю.
Я настраиваю свой сервер следующим образом:
BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["name"] = "MarsLogServer.rem";
props["port"] = Properties.Settings.Default.ListeningPort;
props["useIpAddress"] = false;
server = new LogServer();
chan = new TcpChannel(props, clientProv, serverProv);
ChannelServices.RegisterChannel(chan, true);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(LogServer), "MarsLogServer.rem", WellKnownObjectMode.Singleton);
И мой клиент подключается следующим образом:
this.logServer = (ILogServer)Activator.GetObject(typeof(ILogServer), connectForm.Url);
this.logServer.AttachClient(this, connectForm.SessionKey)
Что происходит, у меня даже не работает сервер, но мой вызов AttachClient () на прокси, который получает мой клиент, завершается успешно. Я не понимаю, почему это так, что не существует процесса, выполняющего размещение объекта по предоставленному URL (если кто-то не подшучивает над мной), так почему бы не вызвать исключение?
В идеале я бы хотел, чтобы вызов не состоялся, или я хотел бы каким-то образом проверить, что мой прокси-сервер действителен, прежде чем разрешить моему клиенту продолжить. Как сейчас, нет способа узнать, было ли соединение успешным или нет.