Nic*_*ick 11 c# entity-framework dbcontext azure-active-directory adal
我正在尝试设置一些.NET应用程序,以便对Azure Active Directory使用基于证书的身份验证,然后使用Active Directory授权我访问Sql Azure数据库.
我遇到的问题是应用程序的某些部分使用的DbContext可能有点太长.如果您在访问令牌到期后的5分钟内请求访问令牌,则ADAL库会尝试刷新访问令牌.麻烦的是我的一些DbContexts可能活超过5分钟.因此,在DbContext的生命周期中,访问令牌不再好,当我尝试SaveChanges时,我得到一个数据库连接异常.
除了重构使我的DbContexts活动时间短于5分钟,我还能做些什么来解决这个问题吗?
我尝试过的一件事是在实体框架中找到一些钩子,我可以捕获过期的访问令牌异常,然后用新创建的具有新访问令牌的连接替换当前连接.我尝试传递EF自定义连接工厂,然后使用执行策略在我收到过期令牌异常时重试.这对我不起作用,因为我无法从自定义执行策略修改或重新创建当前连接.
任何想法将不胜感激.
谢谢!
如果你能负担得起的话,重构你的代码无疑是最好的选择。
如果不能,您可以设置一个计时器每 4 分钟触发一次,并在这个计时器中使用 DBContext 执行一些简单的查询(如果需要,这将刷新您的身份验证令牌,确保它在您 SaveChanges 时仍然有效)。在此期间,您还需要使用一些锁来保护 DBContext,以避免同时使用 DBContext 进行简单查询和 SaveChanges。
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |