Я застрял. Я хочу настроить Castle Windsor в другой библиотеке классов, и я настроил, сборка в порядке, без ошибок, нормально ... Но во время выполнения я получаю исключение.Как использовать Castle Windsor другую сборку из веб-приложения mvc?
Castle.MicroKernel.ComponentNotFoundException: Нет компонент для поддержки App.Web.UI.Controllers.HomeController службы был найден
Когда я получаю файл конфигурационный обратно в той же сборке (App.Web .UI), я не получаю исключения во время выполнения, работа прекрасна.
Я пробовал много способов, но я не мог. Есть ли другой метод связывания, кроме FromThisAssembly? Или решение?
конфигурации Замок Виндзор находится здесь:
namespace App.Infrastructure.Configurations
{
public class WindsorControllerFactory : DefaultControllerFactory
{
private readonly IKernel _kernel;
public WindsorControllerFactory(IKernel kernel)
{
_kernel = kernel;
}
public override void ReleaseController(IController controller)
{
_kernel.ReleaseComponent(controller);
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format("The controller for path '{0}' could not be found.", requestContext.HttpContext.Request.Path));
}
return (IController)_kernel.Resolve(controllerType);
}
}
public class ControllersInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly().BasedOn<IController>().Unless(x => x.Name == "BaseController").LifestyleTransient());
}
}
public class ServiceInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For(typeof (IRepository<>)).ImplementedBy(typeof (Repository<>)).LifestyleTransient(),
Component.For<IUserService>().ImplementedBy<UserService>().LifestylePerWebRequest(),
Component.For<IFormsAuthenticationService>().ImplementedBy<FormsAuthenticationService>().LifestylePerWebRequest(),
Component.For<ILoggingService>().ImplementedBy<LoggingService>().LifestyleTransient(),
Component.For<IFeedbackService>().ImplementedBy<FeedbackService>().LifestylePerWebRequest()
);
}
}
}
Добро пожаловать в StackOverflow! Как написано, ваш вопрос трудно понять. Возможно ли, чтобы вы с коллегой, который является носителем английского языка, рассматривали это с вами? –