gpt4 book ai didi

c# - 刷新长期 Entity Framework 上下文中的 SQL 连接 Azure AD 访问 token

转载 作者:可可西里 更新时间:2023-11-01 08:48:39 28 4
gpt4 key购买 nike

我正在尝试设置一些 .NET 应用程序以对 Azure Active Directory 使用基于证书的身份验证,然后使用 Active Directory 授权我访问 Sql Azure 数据库。

我遇到的问题是应用程序的某些部分使用的 DbContext 可能存在时间过长。如果您在访问 token 过期后 5 分钟内提出请求,ADAL 库会尝试刷新访问 token 。问题是我的一些 DbContexts 可能存活超过 5 分钟。因此,在 DbContext 生命周期的中途,访问 token 不再有效,当我尝试 SaveChanges 时,我得到了一个数据库连接异常。

除了重构以使我的 DbContext 存活时间短于 5 分钟外,我还能做些什么来解决这个问题吗?

我尝试的一件事是在 Entity Framework 中找到一些 Hook ,我可以在其中捕获过期的访问 token 异常,然后将当前连接替换为具有新访问 token 的新创建的连接。我尝试将 EF 传递给自定义连接工厂,然后在收到过期 token 异常时使用执行策略重试。但这对我不起作用,因为我无法通过自定义执行策略修改或重新创建当前连接。

任何想法将不胜感激。

谢谢!

最佳答案

如果您负担得起,重构您的代码无疑是最佳选择。

如果你不能,你可以设置一个定时器每 4 分钟触发一次,并在这个定时器中使用 DBContext 做一些简单的查询(这将在需要时刷新你的身份验证 token ,确保它在你 SaveChanges 时仍然有效) .在此期间,您还需要使用一些锁来保护 DBContext,以避免同时使用 DBContext 进行简单查询和 SaveChanges。

关于c# - 刷新长期 Entity Framework 上下文中的 SQL 连接 Azure AD 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480753/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com