测试远程代理是否有效?

时间:2010-12-17 18:16:12

标签: c# proxy remoting

我正在客户端和服务器之间使用远程处理,虽然它有效但我看到了一些我不理解的行为。

我按如下方式设置我的服务器:

        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上运行托管对象(除非有人在玩我的平均技巧)所以为什么不抛出异常呢?

理想情况下,我希望调用失败,或者我想在允许我的客户端继续之前测试我的代理是否有效。因为现在无法知道连接是否成功。

1 个答案:

答案 0 :(得分:0)

也许您可以使用System.Runtime.Remoting.RemotingServices.IsTransparentProxy(client)来测试TransparentProxy / RealProxy链是否已设置?

-Oisin