Каков реальный контекст загрузки для видимой сборки, к которой обращается COM+?

Мне нужно прояснить некоторые понятия о загрузочном контексте.Net при активации COM+.

Это мой сценарий:

  • Сборка - это dll с некоторыми классами ComVisible
  • Ассамблея не подписана
  • Сборка и его пользовательский файл конфигурации находятся в C:\ProgramFiles\MyApp\
  • Сборка зарегистрирована с регазмом.
  • Сгенерированный tlb перетаскивается внутри приложения сервера COM+

Моя сборка загружает свою конфигурацию следующей строкой:

exeConfigurationFileMap = new ExeConfigurationFileMap { ExeConfigFilename = Path.Combine("C:\ProgramFiles\MyApp", "MyAssembly.dll.config") };
configuration = ConfigurationManager.OpenMappedExeConfiguration(exeConfigurationFileMap, ConfigurationUserLevel.None);

Мой файл конфигурации содержит несколько пользовательских разделов, класс которых объявлен внутри сборки. Файлы конфигурации объявляют пользовательские разделы следующим образом:

<configSections>
    <section name="FooSection" type="MyAssembly.FooSection, MyAssembly" allowLocation="false" allowDefinition="Everywhere" />
    ...

Дело в том, что когда удаленный пользователь вызывает экземпляр моего класса ComVisible, приложение запускается, но классы для пользовательских разделов не могут быть разрешены (как и ожидалось).

Итак, мои вопросы:

  • Каков контекст загрузки для MyAssembly.dll при активации dllhost.exe? Я полагаю, контекст LoadFrom.
  • Каков контекст загрузки для MyAssembly.dll при запросе section type="..."? Я полагаю, по умолчанию загрузить контекст.
  • Какой корневой каталог appdomain запускается через COM+? Я полагаю, c:\windows\system32 - c:\windows\syswow64.
  • Мои предположения верны?

РЕДАКТИРОВАТЬ: После очистки предыдущих тестов я могу получить ошибки (как и ожидалось).

0 ответов

Другие вопросы по тегам