【发布时间】:2015-02-11 23:38:12
【问题描述】:
我创建了一个新的 ASP.NET MVC 5 项目,其中包含个人用户身份验证。然后我继续将 Unity IoC 安装为一个包,并通过在 UnityConfig.cs 中执行以下操作来配置它:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterTypes(AllClasses.FromLoadedAssemblies(), WithMappings.FromMatchingInterface, WithName.Default);
container.RegisterType<AccountController>(new InjectionConstructor());
}
从我通过 Google 阅读的资料来看,这应该考虑到 Unity 会选择具有大多数参数的构造函数这一事实。我的AccountController.cs 有以下两个构造函数。
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
public AccountController()
{
}
public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager )
{
UserManager = userManager;
SignInManager = signInManager;
}
但我仍然遇到问题。当我导航到 http://localhost:xxxx/account/login 时,我收到 404 错误!
这是我的RouteConfig.cs
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Artist",
url: "{controller}/{urlfriendly}/{action}",
defaults: new { controller = "Artist", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
【问题讨论】:
-
您不需要(或者,您是否)设置
DependencyResolver?例如DependencyResolver.SetResolver(new UnityDependencyResolver(container)); -
这已经在
UnityMvcActivator.cs这一行中完成了DependencyResolver.SetResolver(new UnityDependencyResolver(container)); -
获得 404 听起来更像是路由问题,而不是 DI 问题。
-
添加了路由代码,我也是这么想的,但是找不到路由有什么问题!
标签: c# dependency-injection asp.net-mvc-5 asp.net-mvc-routing unity-container