C# 如何解决这个DI缓存问题

C# 如何解决这个DI缓存问题,c#,asp.net-web-api,dependency-injection,entity-framework-6,castle-windsor,C#,Asp.net Web Api,Dependency Injection,Entity Framework 6,Castle Windsor,我正在为我的WebAPI项目使用windsor castleDI以及Generic Repository模式 用户忘记了密码,所以他调用ForgotPassword API。此API会触发带有随机密码的电子邮件 用户通过登录API使用用户名和随机密码登录 登录后用户希望通过调用重置密码API重置密码 用户尝试使用此新密码再次登录 但是,当他这样做时,他会得到用户凭据无效异常。而如果他使用旧密码,则可以登录 当我签入数据库时,密码已正确更新。但当我检查DAL方法时,它使用了EF。密码仍然是旧密码

我正在为我的
WebAPI
项目使用
windsor castle
DI以及
Generic Repository模式

  • 用户忘记了密码,所以他调用ForgotPassword API。此API会触发带有随机密码的电子邮件
  • 用户通过登录API使用用户名和随机密码登录
  • 登录后用户希望通过调用重置密码API重置密码
  • 用户尝试使用此新密码再次登录
  • 但是,当他这样做时,他会得到
    用户凭据无效
    异常。而如果他使用旧密码,则可以登录

    当我签入数据库时,密码已正确更新。但当我检查DAL方法时,它使用了EF。密码仍然是旧密码

    但如果我重新启动的网站是IIS,那么用户可以使用新密码登录

    我的DAL方法

        public bool IsUserValid(string username, string password)
        {
            //#inspection line for me
            var user = GetUser(username);
            return user != null && password.EncryptStringAES() == user.Password;
        }
    
       private User GetUser(string username)
       {
          userName = !string.IsNullOrEmpty(userName) ? userName.Trim().ToLower() : string.Empty;
            return _userRepository.GetQuery()
                .FirstOrDefault(x => x.Email == userName);
    
       }
    
    如果我在#检查行为我调试,我会看到用户对象仍然有旧密码

    DI配置

    public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(
                Classes
                .FromAssemblyNamed("CustomerApp.EF")
                .WithService.Self()
                .LifestylePerWebRequest());
        }
    
    我尝试了
    LifestylePerThread
    &其他方法,但仍然存在相同的问题。而如果我更新我的DAL如下

    public bool IsUservalid(string username, string password)
        {
            using(AppContext entities = new AppContext()
            {
                var user = (from c in entities.tblUsers
                            where c.Email == username
                            select c);
                //if I debug now, no issue 
            }
        }
    
    以上补丁对我无效

    那么是什么导致了这一点&我该如何解决这个问题

    非常感谢您的帮助/建议。
    谢谢。

    既然我们现在开始讨论,我必须提醒大家注意,根据他们的指导原则,这个问题在可能导致它的原因和/或问题中提供的信息是充分的这一事实上过于宽泛

    我建议,既然您已经确定返回的用户对象仍然具有旧密码,那么您应该将调试工作集中在代码的该部分上,并可能将问题细化到包含应用程序该部分的代码上


    另外,如果可能的话,请随意附加/链接一个精简版的应用程序,该应用程序会重现问题,这有助于识别问题。

    既然我们现在就这样做,我必须提请你注意,根据他们的指导方针,这一问题在可能导致这一问题的原因和/或问题中提供的信息充分性方面过于宽泛

    我建议,既然您已经确定返回的用户对象仍然具有旧密码,那么您应该将调试工作集中在代码的该部分上,并可能将问题细化到包含应用程序该部分的代码上

    如果可能的话,也可以随意附加/链接一个精简版的应用程序,它可以重现问题,这有助于识别问题