Если вы работаете с книгой Стивена Сандерсона, Pro ASP.Net MVC Framework, то вам нужно внести изменения в класс WindsorControllerFactory для работы с интерфейсом, предоставляемым DefaultControllerFactory. Этот класс был обновлен в MVC 2 Preview 2. Кто знает, что будет в финальной версии.
Изменение:
protected override IController GetControllerInstance(Type controllerType)
Кому:
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
Я также счел необходимым убедиться, что среда MVC 2 Preview 2 не прошла в неконтроллерный класс (он неожиданно передавался в favicon.ico как controllerType). Таким образом, обновленный метод GetControllerInstance выглядит следующим образом:
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
//Debug.Print("Controller: {0}, Action: {1}", requestContext.RouteData.Values["Controller"], requestContext.RouteData.Values["Action"]);
if (controllerType == null)
{
//Debug.Print("Is IController: {0}", (controllerType is IController));
//Debug.Print("Is null: {0}", (controllerType == null));
return null;
}
else
{
return (IController)container.Resolve(controllerType);
}
}
Я оставил там код отладки на тот случай, если вам интересно узнать, почему вы получаете сообщение об ошибке «Значение не может быть пустым» в WindsorControllerFactory.
После внесения этого изменения Виндзор начал работать на меня. Надеюсь, это поможет.
Cheers,
Jason