2016-08-12 17 views
0

城ウィンザー依存性注入のために以下のリンクを使用しました。コンポーネントを登録することができません。城ウィンザーにコンポーネントを登録できません

http://www.codeproject.com/Tips/1052382/ASP-NET-MVC-Dependency-Injection-using-Windsor#_comments

public class ServiceInstaller : IWindsorInstaller 
{ 
    public void Install(Castle.Windsor.IWindsorContainer container, 
         Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store) 
    { 
     container.Register(
      Component.For<Interfaces.TestInterface>() 
        .ImplementedBy<Services.TestServices>() 
        .LifestyleTransient()); 
    } 
} 

にErrorMessage:

タイプ 'Castle.MicroKernel.ComponentRegistrationException' の例外は Castle.Windsor.dllで発生したが、ユーザーコードで処理されなかった

追加情報:コンポーネント TestForCastleWindsor.Services.TestServices could n登録してください。 すでにその名前のコンポーネントがあります。代わりに を既存のコンポーネントに変更しますか?そうでない場合は、固有の という名前を指定してください。

+0

あなたは既に別の場所にコンポーネントを登録していませんか?登録パイプラインはどこにもカスタマイズされていませんか? – Charleh

+0

私は他の場所でコンポーネント – user2465036

+0

パブリッククラスControllersInstaller登録していない:。。。(IWindsorInstaller は{ 公共ボイドは(IWindsorContainerコンテナ、IConfigurationStore店) { container.Registerをインストール クラスを FromThisAssembly() BASEDON () の場合(c => c.Name.EndsWith( "Controller"))。 LifestyleTransient()); ControllerBuilder.Current.SetControllerFactory(新しいWindsorControllerFactory(container)); } } – user2465036

答えて

0

そのコンポーネントは2回登録されています。これは、IWindsorInstallerの実装またはコンポーネントが慣例によって選択されたときに発生します。たとえば、ディレクトリ内のすべてのアセンブリがIWindsorInstallerの実装についてスキャンされ、古い複製アセンブリが存在するとします。あるいは、あなたのコンポーネントによって実装された別のインターフェースのすべての実装は、あらかじめ登録されています。

関連する問題