注册熟知的客户端类型时出现异常

时间:2009-10-06 18:17:10

标签: .net remoting

我使用.NET远程处理在客户端和服务器之间进行通信。我实现了客户端应用程序,并在使用“RegisterWellKnownClientType”在客户端上注册对象时遇到异常。例外是“尝试重定向已经重定向的类型的激活”。只有当我第二次注册对象时才会出现此异常。以下是说明它的代码:

IpcClientChannel clientChannel = new IpcClientChannel();
try
   {
      ChannelServices.RegisterChannel(clientChannel, true);
      RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteTester), m_remoteUrl);             
   }    

此代码在我的ClientClass中实现。最初我创建一个myClient ClientClass的对象来访问此类公开的方法。这还包括在客户端上注册对象的方法。一旦放置了这个对象(myClient),我就创建了ClientClass的另一个实例,并访问在客户端上注册对象的方法。在此过程中,我得到了上述异常。在客户端上注册对象的方法用于对服务器进行远程调用。

如果我在这里遗漏任何东西,请告诉我。

谢谢, Mustaq

2 个答案:

答案 0 :(得分:1)

IsWellKnownClientType(..,..)这个方法没有返回bool值,它返回WellKnownClientTypeEntry

如果检查指定的对象System.Type是否已注册为众所周知的客户端类型。如果WellKnownClientTypeEntry为null则不注册。

这是我解决问题的代码。希望它能帮到你...

WellKnownClientTypeEntry entry = RemotingConfiguration.IsWellKnownClientType(typeof(RemoteConverter));

if(entry == null) {    RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteConverter),“http:// localhost:4000 / ServiceURI”); }

RemoteConverter remoteConverter = new RemoteConverter();

现在调用remorte方法remoteConverter.RemoteMethod(.......)


谢谢。

答案 1 :(得分:0)

测试您是否已经注册了类似的客户端类型:

if (RemotingConfiguration.IsWellKnownClientType(typeof(RemoteTester)) == false) {
    // register
    RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteTester), ...
}

-Oisin