我有一个MVC应用程序,它在任何地方使用Windsor,它在Windsor Castle的任何地方都可以正常工作,但现在我在其中添加了一个新代码并且它无法正常工作。 我使用以下代码配置Castle:
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.
有什么问题?我有类似的代码,他们正在工作。
答案 0 :(得分:1)
我发现了问题: 上面的代码适用于Windsor 3.x,但我的应用程序使用2.5。 在2.5版中执行此操作的正确方法如下:
container.Register(Component.For<IFileUploadService>().ImplementedBy<FileUploadService>().Parameters(Parameter.ForKey("x").Eq(
"test")).LifeStyle.PerWebRequest);