我正在尝试设置一些.NET应用程序,以使用基于证书的身份验证连接到Azure Active Directory,然后使用Active Directory授权我的访问Sql Azure DB。
我的问题是,应用程序的某些部分使用的DbContext可能存在时间过长的情况。如果您在5分钟内请求过期的令牌,ADAL库会尝试刷新访问令牌。问题是,我的某些DbContext可能比5分钟更长寿。因此,在DbContext寿命的一半时,访问令牌就不再有效了,当我尝试保存更改时,会出现数据库连接异常。
除了重构以使我的DbContext的生命期短于5分钟之外,我还能做些什么来解决这个问题吗?
我尝试过的一件事是在Entity Framework中找到一些钩子,可以捕获过期的访问令牌异常,然后将当前连接替换为一个具有新访问令牌的新创建连接。我尝试传递自定义连接工厂给EF,然后使用Execution Strategy在获取过期令牌异常时进行重试。但是,这对我没有起作用,因为我无法从自定义执行策略中修改或重新创建当前连接。
任何想法将不胜感激。
谢谢!