第一次使用 Unity,
我已经建立了一个这样的类并在 global.asax 中注册:
public class UnityControllerFactory : DefaultControllerFactory
{
private IUnityContainer container;
public UnityControllerFactory()
{
container = new UnityContainer();
RegisterTypes();
}
protected override IController GetControllerInstance(
System.Web.Routing.RequestContext requestContext,
Type controllerType)
{
return controllerType == null ?
null :
(IController)container.Resolve(controllerType);
}
private void RegisterTypes()
{
container.RegisterType<IUserRepository, EFUserRepository>();
}
}
问题是,当调用 AccountController(默认 MVC 项目自带)时,会抛出错误:
Microsoft.Practices.Unity.dll 中出现“Microsoft.Practices.Unity.ResolutionFailedException”类型的异常,但未在用户代码中处理
我可以看到有一种方法可以检查类型是否已注册,但是当我进行检查时,如何强制框架使用默认控制器?
if (container.IsRegistered(controllerType))
这是我的路由,如您所见......我希望登录页面成为人们看到的第一页......
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/",
defaults: new {
controller = "Account",
action = "Login",
returnUrl = UrlParameter.Optional }
);
}
}