Каков реальный контекст загрузки для видимой сборки, к которой обращается 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.
- Мои предположения верны?
РЕДАКТИРОВАТЬ: После очистки предыдущих тестов я могу получить ошибки (как и ожидалось).