.NET Remoting в Mono: Uri уже используется

Бег:

  • Ubuntu 10.04, 32-разрядная версия
  • Моно 2.6.7

У меня есть приложение, разработанное в VS 2008, которое использует удаленное взаимодействие .NET (с пользовательским классом RemotingUDPChannel). Сейчас мы пытаемся запустить это на Linux (сборка в MonoDevelop), но я получаю следующую ошибку.

Код, вызывающий исключение:

this.server = RemotingServices.Marshal(this, objectUri);

Исключение:

System.Runtime.Remoting.RemotingException: Uri already in use:

Мы получали эту ошибку в прошлом при работе на стороне Windows, если у нас было запущено несколько приложений для удаленного взаимодействия, но исправили ее, создав новый домен приложения для каждого. Однако это, похоже, не влияет на это на стороне Linux. Кроме того, мы не пытаемся запускать несколько приложений для удаленного взаимодействия, а только одно.

Любые идеи по этой проблеме? Спасибо!


person Tara    schedule 22.09.2011    source источник
comment
URI вашего объекта пуст? Какое значение для objectUri?   -  person Hans    schedule 22.09.2011
comment
Значение URI печатается в сообщении об ошибке и совпадает со значением, указанным в файле конфигурации; Я просто вырезал это из сообщения об ошибке здесь. Так что, похоже, он получает это значение просто отлично.   -  person Tara    schedule 24.09.2011
comment
Является ли значение вашего objectUri RemotingActivationService.rem? В Mono 2.6.7 класс RemotingServices по умолчанию добавляет общеизвестный идентификатор сервера с URI RemoteActivationService.rem. Если вы также используете этот uri, вы получите описанное исключение.   -  person Hans    schedule 24.09.2011
comment
Нет, значение является пользовательским name.rem. Я опубликую наш обходной путь ниже.   -  person Tara    schedule 26.10.2011


Ответы (1)


Наш обходной путь к этой проблеме:

Удалите тег из нашего файла конфигурации удаленного взаимодействия, из-за которого объект удаленного взаимодействия

RemotingConfiguration.Configure(configurationFile, false);

и

RemotingServices.Marshal(this, objectUri);

Тег удален:

<service>

   <wellknown mode="Singleton" objectUri="FileSyncer.rem" type="MyLib.FileSyncerServer, MyLib" />

</service>

Это нужно было сделать только со стороны сервера.

person Tara    schedule 26.10.2011
comment
Спасибо, решил глупую проблему. Как ни странно, это произошло только в Ubuntu/Mono, а не в Win7/.NET. - person Jason Maskell; 19.11.2012