我们正在使用的项目中有一些表,其中一个标准是让所有表都包含一些用于审计的字段。我已经在我的数据层中设置了一种方法,可以在发生数据库提交时自动记录这两个字段。但是我需要从HttpContext中获取用户名。我的数据层基本上是这样设置的:
public UnitOfWork(DataContext dataContext, IUserIdentity identity)
{
//Misc
_dataContext = dataContext;
EntryNm = identity.UserId;
//Repositories
SomeRepository = new SomeRepository(dataContext);
}
Ninject绑定
kernel.Bind<DataContext>().ToSelf().InRequestScope();
kernel.Bind<IUserIdentity>().To<UserIdentity>();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
的UserIdentity
public interface IUserIdentity
{
string UserId { get; }
}
public class UserIdentity : IUserIdentity
{
public string UserId
{
get
{
return HttpContext.Current.User.Identity.Name;
}
}
}
但是当我运行程序时,我总是从identity.UserId而不是当前标识中获取一个空字符串。我对依赖注入很新,但是我希望它能够工作的方式是在每个请求中使用上下文创建UnitOfWork,该上下文也应该从当前HTTPContext传入UserId。