我在 ASP.NET MVC 3 项目中使用 IOC 容器实现表单身份验证时遇到问题。我们已经在数据库中存储了我们的用户信息,并且有很多自定义属性。
我有一个注册到 IOC 容器的用户定义接口,用于开发目的。该接口提供给每个控制器,因此控制器具有当前用户信息。
在我删除 Application_Start 中的虚拟用户注册之前,这一切都很好
我收到此错误: 当前类型 ...CurrentUserInformation.IUserInformation 是一个接口,无法构造。您是否缺少类型映射?
我不想使用虚拟用户对象,因为我认为这不是最佳做法。
有人可以帮助我还是有更好的方法来进行这种自定义身份验证?
编辑添加了一些代码
基本控制器
public class BaseController : Controller
{
private readonly IUserInformation _userInformation;
public BaseController(IUserInformation userInformation)
{
_userInformation = userInformation
}
}
从 Application_Start 调用的引导程序初始化
public static void Initialise()
{
var container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
//register all services en repositories
//here i put my dummy user wich i want to remove
container.RegisterInstance<IUserInformation>(
new UserInformation
{
UserId = 1,
...
});
return container;
}