我在客户端和服务器之间使用远程处理,虽然它可以工作,但我看到了一些我不理解的行为。
我正在设置服务器,如下所示:
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上没有运行托管对象的进程(除非有人对我玩了恶作剧),所以为什么它不抛出一个异常呢?
理想情况下,我希望调用失败,或者在允许客户端继续之前,我希望通过某种方法测试我的代理是否有效。就像现在一样,无法知道连接是否成功。
发布于 2010-12-18 02:25:56
也许您可以使用System.Runtime.Remoting.RemotingServices.IsTransparentProxy(client)来测试是否设置了透明代理/RealProxy链?
-Oisin
https://stackoverflow.com/questions/4473548
复制相似问题