我正在使用ASP.Net MVC5开发项目,并从试图调用System.Web.Mvc.Controller.View(System.String,System.Object)的控制器方法中获取MethodAccessException。
以下是代码段。
public class SectionBaseController : System.Web.Mvc.Controller
{
...
}
public class SectionController<TModel> : SectionBaseController
{
...
}
public class BookController<TModel> : SectionController<TModel>
{
[System.Web.Http.HttpPost]
public ActionResult CreateNewBook(string autherName, List<TModel> viewModels)
{
// do some work
var model = someResult;
return View("BookView", model);
}
}
BookView.cshtml位于项目的Views / Book文件夹中。
当应用程序执行BookController.CreateNewBook方法时,将抛出System.MethodAccessException行
return View("BookView", model);
错误消息是:
尝试方法 'BookController 1.CreateNewBook(System.String, System.Collections.Generic.List`1)'访问方法 'System.Web.Mvc.Controller.View(System.String,System.Object)'失败。
由于BookController间接继承自System.Web.Mvc.Controller,我无法解决为什么它无法访问在System.Web.Mvc.Controller类中定义为protected internal的View方法。
有一个控制器工厂方法可以解析Unity容器中的Controller实例。
public class ControllerFactory : System.Web.Mvc.DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return _unityContainer.Resolve(controllerType);
}
}
我错过了什么吗?