Asp.net mvc 5 使用Unity DI而不是OWIN将主体信息注入n层ASP MVC 5的最佳方法

Asp.net mvc 5 使用Unity DI而不是OWIN将主体信息注入n层ASP MVC 5的最佳方法,asp.net-mvc-5,unity-container,Asp.net Mvc 5,Unity Container,我正在编写一个在数据访问层使用实体框架的n层ASP MVC 5应用程序。归根结底,我需要一种简单的方法将当前用户信息(在表示层的HttpContext中可用)获取到我的数据访问层(存储库)中,而不是。显然,这听起来像是我的DI容器(Unity 3)的工作。我的第一个反应是尝试在控制器操作中创建一个特定于请求的子容器。因为我使用了由支持MvcSiteMapProvider的好心人慷慨提供的配置和引导,所以我遇到了麻烦,因为他们抽象了DI容器来处理多种风格,并且容器是只读的。然后我偶然发现了Unit

我正在编写一个在数据访问层使用实体框架的n层ASP MVC 5应用程序。归根结底,我需要一种简单的方法将当前用户信息(在表示层的HttpContext中可用)获取到我的数据访问层(存储库)中,而不是。显然,这听起来像是我的DI容器(Unity 3)的工作。我的第一个反应是尝试在控制器操作中创建一个特定于请求的子容器。因为我使用了由支持MvcSiteMapProvider的好心人慷慨提供的配置和引导,所以我遇到了麻烦,因为他们抽象了DI容器来处理多种风格,并且容器是只读的。然后我偶然发现了Unity.Mvc PerRequestLifetimeManager,它表面上听起来像是一个解决方案,但却缺少相关信息。在我在各种各样的兔子洞里迷路几天之前,还有其他人在这条路上找到了干净、半优雅的解决方案吗?

请原谅我对您项目的复杂性可能缺乏了解;但是从simpleton的角度来看,一些持久化实体审计信息的选项(上次更新日期时间、用户等): 1.为您的实体创建一个基类,在其中定义审核信息属性,在构造函数中设置它们,或将它们公开给要设置/覆盖的应用程序。
2.为您的上下文创建一个基类,覆盖SaveChanges,检查正在持久化的实体并更新它们的审核信息()。

看起来PerRequestLifetimeManager运行良好。我原以为将MvcSiteMapProvider的引导程序和其他基础设施与Unity.Mvc NuGet包混合在一起会有很多麻烦,但到目前为止,它们看起来在一起非常愉快。

感谢您的建议,但关键是我正在尝试使用依赖注入(IoC)容器来实现这一点。我可能没有很好地解释清楚。当你感到疲倦和沮丧时提交问题是一个错误。