1

У меня есть приложение MVC, которое использует Windsor везде, и оно отлично работает везде с Виндзорским замком, но теперь я добавляю в него новый код, и он работает неправильно. Я настроил замок со следующим кодом:Почему этот код, который использует замок Windsor, не работает?

public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(Component.For<IFileUploadService>().ImplementedBy<FileUploadService>().DependsOn(Parameter.ForKey("x").Eq(
      "test")).LifeStyle.PerWebRequest); 
    } 

В FileUploadService определяется следующим образом:

public class FileUploadService : IFileUploadService 
{ 



      public FileUploadService(string x) 
    { 
     // use x   
    } 
} 

Я уверен, что инсталлятор линия звонит (Debug показывает, что линия проходит в начале . применения

у меня есть контроллер, который определяется следующим образом:

public FileUploadController(IConfiguration Configuration, IFileUploadService fileUploadService) 
    { 
     this.Configuration = Configuration; 
     this.fileUploadService = fileUploadService; 
    } 

Когда я запускаю это приложение, я получаю эту ошибку:

Can't create component 'FileUploadService' as it has dependencies to be satisfied. 
    FileUploadService is waiting for the following dependencies: 

    Keys (components with specific keys) 
    - x which was not registered. 

В чем проблема? У меня есть аналогичный код, который они работают.

ответ

1

Я нашел проблему: Приведенный выше код работает с Windsor 3.x, но мое приложение использует 2.5. Правильный способ сделать это в версии 2.5 следующим образом:

container.Register(Component.For<IFileUploadService>().ImplementedBy<FileUploadService>().Parameters(Parameter.ForKey("x").Eq(
     "test")).LifeStyle.PerWebRequest); 
Смежные вопросы