我想构建一个非常简单的.Net远程连接,并且似乎无法弄清楚魔法咒语。.Net远程处理错误“请求的服务未找到”
我有一个服务器端类,它是一个单身人士,并在服务过程中持续存在。
public class MyRemoteServerClass : MarshalByRefObject
{
public void DoSomething()
{
System.Diagnostics.Trace.Assert(false);
}
public override object InitializeLifetimeService()
{
return null;
}
}
根据我的.Net远程的读数,我写了这个代码来实例化和注册服务的服务器类:
static void Main(string[] args)
{
MyRemoteServerClass server = new MyRemoteServerClass();
TcpChannel channel = new TcpChannel(8080);
ChannelServices.RegisterChannel(channel, false);
string url = "tcp://localhost:8080/MyRemoteServerClass";
RemotingServices.Marshal(server, url, server.GetType());
System.Console.ReadLine();
}
我在.NET的WinForms客户端写了这个代码来调用在“MyRemoteServerClass.DoSomething”功能:
private void button1_Click(object sender, EventArgs e)
{
string url = "tcp://localhost:8080/MyRemoteServerClass";
ChannelServices.RegisterChannel(new TcpChannel(), false);
MyRemoteServerClass root = Activator.GetObject(typeof(MyRemoteServerClass), url) as MyRemoteServerClass;
root.DoSomething();
}
的“Activate.GetObject”调用似乎得到一个代理参考服务器“MyRemoteServerClass”实例。但是,当我打电话给'DoSomething'时,我会收到“请求的服务未找到”异常。
{System.Runtime.Remoting.RemotingException:找不到请求的服务
服务器堆栈跟踪: 在System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack,即时聊天requestMsg,ITransportHeaders requestHeaders,流requestStream ,即时聊天& responseMsg,ITransportHeaders & responseHeaders响应,流& responseStream)[0]时
异常重新抛出: 在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天reqMsg,我消息retMsg) 在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & MSGDATA,的Int32类型) 在RemoteExampleServer.MyRemoteServerClass.DoSomething() 在RemoteExampleClient.Form1.button1_Click(对象发件人,EventArgs的在c)中: \ Aaron \ RemoteExampleClient \ Form1.cs:line 30} System.Exception {System.Runtime.Remoting.RemotingException}
我在做什么错?请注意,我允许通过防火墙访问这些应用程序(并且在完全禁用防火墙时,我也会得到相同的行为)。我的电脑上没有其他安全软件。
感谢,
亚伦
PS。我更喜欢不涉及修改'App.config'xml的解决方案。如果可能的话,我想要在代码空间中配置.Net远程连接。