#.net #remoting #.net-remoting
#.net #удаленный #.net-remoting
Вопрос:
Мы работаем с настройкой удаленного взаимодействия, которая использует следующий конфигурационный файл.
<application>
<service>
<wellknown mode="Singleton" type="NameSpace.ProjectNameSpace.ProjectPartNameSpace.ObjectA, ProjectPartName" objectUri="iObjectA.rem" />
<wellknown mode="Singleton" type="NameSpace.ProjectNameSpace.AnotherProjectPartNameSpace.ObjectB, AnotherProjectPartName" objectUri="iObjectB.rem" />
<service>
<application>
Это работает нормально, пока проекты действительно содержат указанные объекты (ObjectA и ObjectB), когда клиент вызывает удаленный объект.
Вопрос
Есть ли простой способ проверить, действительно ли объекты удаленного доступа существуют при сборке / запуске сервера?
В текущей ситуации нам приходится ждать, пока клиенты выполнят вызов и завершатся сбоем, прежде чем мы увидим, что объекты не существуют.
Комментарии:
1. Я надеюсь на решение во время сборки, но любое другое решение (не после сборки) также приветствуется. У меня есть набор тестовых скриптов, поэтому подойдет простой тестовый скрипт.
Ответ №1:
Я нашел «приемлемый» ответ, но он меня не очень устраивает.
Изменение конфигурации на следующую:
<system.runtime.remoting>
<application>
<service>
<wellknown mode="Singleton" type="NameSpace.ProjectNameSpace.ProjectPartNameSpace.ObjectA, ProjectPartName" objectUri="iObjectA.rem" />
<wellknown mode="Singleton" type="NameSpace.ProjectNameSpace.AnotherProjectPartNameSpace.ObjectB, AnotherProjectPartName" objectUri="iObjectB.rem" />
<service>
</application>
<debug loadTypes="true"/>
</system.runtime.remoting>
Выдаст исключение удаленного взаимодействия для всех объектов, которые не существуют в ссылочной библиотеке DLL проекта. Это выдаст одно исключение для каждой неверной строки конфигурации, но между ними вам придется перезапустить сервер, чтобы получить «следующий» объект удаленного доступа, который больше не работает.
Комментарии:
1. В нашей ситуации мы столкнулись с дополнительной проблемой, которую создал небольшой инструмент генерации кода .rem ссылается в файле конфигурации, независимо от того, использовали мы класс или нет. Поэтому мы не можем использовать <debug loadTypes=»true»/> ‘trick’