2011-01-19 8 views
1

私は2つのCOM +アプリケーションをC#で構築しています。彼らは構成にアクセスする必要があります。そのため、(サーバーのコンテキストにあるため)COM +アプリケーションのApplication Root Directoryをapplication.manifestファイルとapplication.configファイルを含むディレクトリに設定します。私がこのように構築した最初のコンポーネントが機能します。第二の要素は、私がそれを書いたやり方で一つの意味のある違いを見つけることができません。COM +コンポーネントが静的コンテキストの構成を読み取っていません

ConfigurationManager.GetSection("unity")を使用して静的コンテキストから構成にアクセスしようとすると、nullが返されます。非静的コンテキストから同じものを呼び出すと、期待される結果が返されます(セクションが返されます)。最初のコンポーネントは静的なコンテキストから正しく呼び出すため、何が間違っていますか?

DLL 1ではなく、DLL 2作品:

DLL 2でprivate static IUnityContainer m_unityContainer = new UnityContainer().LoadConfiguration()

作品:

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

または

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

答えて

0

私は」わからないしかし、これはx64とx86の違いと関係があると思います。私はコードを変更して解決しました

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

私のCOM +アセンブリで設定ファイルを読むのと同じ問題がありました。

1)application.configファイルと()私の場合のデバッグフォルダ内のアセンブリと同じフォルダにあることがapplication.manifest必要BOTH:私のために働いた何

2)アプリケーションルートディレクトリは、COM +アプリケーションの[アクティブ化]タブで指定する必要があります。コンポーネントサービスを実行し、[プロパティ]を右クリックし、[アクティベーション]タブに移動します。また、regsvcs/appdir:オプションを使用してこれを行うこともできます。

関連する問題