Компонент COM + не читает конфигурацию из статического контекста - PullRequest
1 голос
/ 20 января 2011

У меня есть 2 приложения COM +, встроенных в C #. Им нужен доступ к конфигурации, поэтому для их получения (поскольку они находятся в контексте сервера) я установил корневой каталог приложения в приложении COM + на каталог, содержащий файл application.manifest и файл application.config. Первый компонент, который я построил таким образом, работает. Второй компонент, который я не могу найти ни единого значимого различия в том, как я его написал, - нет.

Если вы попытаетесь получить доступ к конфигурации, используя ConfigurationManager.GetSection("unity") из статического контекста, она вернет ноль. Вызов одного и того же из нестатического контекста дает ожидаемые результаты (возвращается раздел). Так как первый компонент работает правильно, вызывая его из статического контекста, что я делаю не так?

Работает в DLL 1, но не в DLL 2:

private static IUnityContainer m_unityContainer = new UnityContainer().LoadConfiguration()

Работает в DLL 2:

private IUnityContainer m_unityContainer = new UnityContainer().LoadConfiguration()

или

private IUnityContainer m_unityContainer; public void Process() { m_unityContainer = new UnityContainer().LoadConfiguration(); }

Ответы [ 2 ]

0 голосов
/ 21 ноября 2013

Была похожая проблема при чтении файла конфигурации в моей сборке COM +.

Что сработало для меня:

1) ОБА файл application.config и application.manifest должны находиться в одной папке со сборкой (в моем случае папка отладки).

2) Корневой каталог приложения необходимо указать на вкладке «Активация» приложения COM +. Запустите Службы компонентов, щелкните правой кнопкой мыши Свойства и перейдите на вкладку Активация. Можно также сделать это с помощью regsvcs / appdir: option.

0 голосов
/ 21 января 2011

Я не уверен, но я думаю, что это как-то связано с различиями в x64 и x86.Я решил это, изменив код на

private static readonly Lazy<IUnityContainer> m_unityContainer = new Lazy<IUnityContainer>(() => new UnityContainer().LoadConfiguration());
...