首页 > 解决方案 > 如何将当前用户会话信息从 Web 应用程序传递到 asp.net 核心中的业务层

问题描述

如何将我当前的用户会话信息从 web 应用程序传递到 asp.net core 中的业务层?


我曾尝试将会话信息从控制器构造函数传递到业务逻辑层对象,但是我发现会话的 null 异常,因为在请求未完成之前会话未初始化。

实际上,在我的项目中,我正在使用 DI,我只想从中传递会话信息,UI -> BL -> DA以便我可以根据用户会话信息决定在 DA 中使用哪个连接字符串,还想在我的 Add 中使用当前用户 ID和编辑操作以维护操作的历史记录。


所有 DA 和 BL 服务都使用 DI 进行配置,并且使用 DI 注入服务。

   public class SystemUserController : BaseController
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        public BL.ISystemUserService _systemUserService { get; }
        public SystemUserController(BL.ISystemUserService systemUserService, IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
            _systemUserService = systemUserService;
            _systemUserService.Session = new RepositorySession(_httpContextAccessor.HttpContext.Session.CurrentUser().SystemUserId,DatabaseConnection.CONFIG);
        }

标签: c#asp.netasp.net-coremodel-view-controller

解决方案


您无法访问业务层中的会话值。

如果要维护操作历史记录,则需要在 Web 项目中调用该方法,而不是在 BL(业务层)中。


推荐阅读