我使用.NET远程处理在客户端和服务器之间进行通信。我实现了客户端应用程序,并在使用“RegisterWellKnownClientType”在客户端上注册对象时遇到异常。例外是“尝试重定向已经重定向的类型的激活”。只有当我第二次注册对象时才会出现此异常。以下是说明它的代码:
IpcClientChannel clientChannel = new IpcClientChannel();
try
{
ChannelServices.RegisterChannel(clientChannel, true);
RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteTester), m_remoteUrl);
}
此代码在我的ClientClass
中实现。最初我创建一个myClient
ClientClass
的对象来访问此类公开的方法。这还包括在客户端上注册对象的方法。一旦放置了这个对象(myClient
),我就创建了ClientClass
的另一个实例,并访问在客户端上注册对象的方法。在此过程中,我得到了上述异常。在客户端上注册对象的方法用于对服务器进行远程调用。
如果我在这里遗漏任何东西,请告诉我。
谢谢, Mustaq
答案 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