【发布时间】:2012-09-16 17:17:09
【问题描述】:
我在我的 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;
}
【问题讨论】:
-
你能展示你的代码吗?你是如何配置容器的?你的对象和控制器是什么样子的?
标签: asp.net-mvc-3 forms-authentication unity-container custom-authentication