在我在主网页程序集中的项目中,在我在global.asax中注册路由之前,我加载了许多外部程序集。其中一些程序集中包含MVC控制器和视图。
我的问题是这些外部控制器由于某种原因没有被选中,我认为控制器注册发生在我的程序集加载之前的某个地方,因为如果我在应用程序启动之前引用我的程序集(bin文件夹中的dll)一切正常。
所以我想知道是否有
之前我遇到过与WebAPI控制器类似的问题,我可以使用我的自定义HttpControllerSelector
修复它,但我还是找不到类似的MVC。
答案 0 :(得分:5)
能够通过覆盖DefaultControllerFactory
的{{1}}方法来解决问题:
的Application_Start:
CreateController
的ControllerFactory:
IControllerFactory factory = new ControllerFactory();
ControllerBuilder.Current.SetControllerFactory(factory);
public class ControllerFactory : DefaultControllerFactory
{
public override IController CreateController(RequestContext requestContext, string controllerName)
{
IController controller = null;
Type controllerType;
if (ControllerTypes.TryGetValue(controllerName.ToLower(), out controllerType))
{
controller = (IController) Activator.CreateInstance(controllerType);
}
return controller;
}
...
}
是来自外部程序集的MVC控制器的字典。
答案 1 :(得分:1)