首页 > 解决方案 > 如何修复:“IDataProtectionBuilder”不包含“PersistKeysToDbContext”的定义并且没有可访问的扩展

问题描述

我正在尝试使用 services.AddDataProtection() 中的 PersistKeysToDbContext 扩展将键持久化到 SQL。目前我们正在使用 PersistKeysToStackExchangeRedis,它工作得非常好,但是需要将其移至 DB。

我们正在使用添加了以下参考的 .net Core 2.2 项目:

Microsoft.AspNetCore.DataProtection.EntityFrameworkCore (2.2.0) Microsoft.AspNetCore.DataProtection.Extensions (2.2.0) Microsoft.AspNetCore.DataProtection.StackExchangeRedis (2.2.0) (显然是针对当前功能)

Microsoft.EntityFrameworkCore (2.2.0)

services.AddDataProtection().PersistKeysToDbContext<ApplicationDbContext>();

我从编译器收到以下错误:

“IDataProtectionBuilder”不包含“PersistKeysToDbContext”的定义,并且找不到接受“IDataProtectionBuilder”类型的第一个参数的可访问扩展方法“PersistKeysToDbContext”(您是否缺少 using 指令或程序集引用?)

标签: c#.net-coreentity-framework-core

解决方案


1)确保您已安装 Microsoft.AspNetCore.DataProtection.Extensions + Microsoft.AspNetCore.DataProtection.EntityFrameworkCore(作为参考)。

2)添加using Microsoft.AspNetCore.DataProtection;到 Startup.cs (或任何你有问题的地方)。

我已经测试过并且它可以工作,所以如果它仍然不起作用,你可能需要确保你没有错过任何东西。


推荐阅读