C# Mono上的.NET远程处理:Uri已在使用中
运行:C# Mono上的.NET远程处理:Uri已在使用中,c#,.net,mono,.net-remoting,C#,.net,Mono,.net Remoting,运行: Ubuntu 10.04,32位 Mono 2.6.7 我有一个在VS2008中开发的应用程序,它使用.NET远程处理(带有一个自定义的远程处理UdpChannel类)。我们正在尝试在linux上运行它(在MonoDevelop中构建),但是我收到了以下错误 导致异常的代码: this.server = RemotingServices.Marshal(this, objectUri); 例外情况: System.Runtime.Remoting.RemotingException
- Ubuntu 10.04,32位
- Mono 2.6.7
this.server = RemotingServices.Marshal(this, objectUri);
例外情况:
System.Runtime.Remoting.RemotingException: Uri already in use:
过去,如果有多个远程处理应用程序在运行,我们在窗口端运行时会收到此错误,但通过为每个应用程序创建一个新的appdomain修复了此错误。然而,在linux端,这似乎并不影响它。此外,我们不尝试运行多个远程应用程序,只运行一个
对这个问题有什么想法吗?谢谢 我们解决此问题的方法: 从远程处理配置文件中删除一个标记,该标记导致在两个位置都添加远程处理对象
RemotingConfiguration.Configure(configurationFile, false);
及
移除的标签是:
<service>
<wellknown mode="Singleton" objectUri="FileSyncer.rem" type="MyLib.FileSyncerServer, MyLib" />
</service>
这只需要从服务器端完成。您的对象URI是空的吗?objectUri的值是什么?URI值打印在错误消息中,并与配置文件中指定的值匹配;我只是在这里把它从错误信息中剪掉了。所以看起来它得到的值很好。objectUri的值是“RemotingActivationService.rem”吗?在Mono 2.6.7下,默认情况下,RemotingServices类会添加一个众所周知的服务器标识,其URI为“RemoteActivationService.rem”。如果您也使用此uri,则会得到描述的异常。否,该值是自定义的“name.rem”。我将在下面发布我们的解决方法。谢谢你,解决了一个愚蠢的问题。有趣的是,这只发生在Ubuntu/Mono上,而不是在Win7/.NET上
<service>
<wellknown mode="Singleton" objectUri="FileSyncer.rem" type="MyLib.FileSyncerServer, MyLib" />
</service>