我正在客户端和服务器之间使用远程处理,虽然它有效但我看到了一些我不理解的行为。
我按如下方式设置我的服务器:
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上运行托管对象(除非有人在玩我的平均技巧)所以为什么不抛出异常呢?
理想情况下,我希望调用失败,或者我想在允许我的客户端继续之前测试我的代理是否有效。因为现在无法知道连接是否成功。
答案 0 :(得分:0)
也许您可以使用System.Runtime.Remoting.RemotingServices.IsTransparentProxy(client)来测试TransparentProxy / RealProxy链是否已设置?
-Oisin