1
我使用this post在我的MVC4項目中創建授權。問題是我使用Castle Windsor作爲DI。當調用該函數下面我就行了return (ControllerBase) controller
Cast Castle IControllerProxy到ControllerBase
static ControllerBase GetControllerByName(
HtmlHelper helper, string controllerName)
{
IControllerFactory factory =
ControllerBuilder.Current.GetControllerFactory();
IController controller = factory.CreateController(
helper.ViewContext.RequestContext, controllerName);
if (controller == null)
{
throw new InvalidOperationException(
string.Format(
CultureInfo.CurrentUICulture,
"Controller factory {0} controller {1} returned null",
factory.GetType(),
controllerName));
}
return (ControllerBase) controller; // <= error here
}
得到一個錯誤,我得到的錯誤是:
Unable to cast object of type
'Castle.Proxies.IControllerProxy_2' to type 'System.Web.Mvc.ControllerBase'.
有沒有一種方法,所以我可以使這項工作?
你可以發佈你的ControllerFactory和你的控制器註冊碼嗎?在它的表面上,你的代碼應該可以工作,因爲代理應該從控制器類派生,控制器派生自ControllerBase類。 –