当前位置: 首页 > 知识库问答 >
问题:

无法解析类型“Microsoft.AspNetCore.DataProtection.IDataProtector”的服务

卢景澄
2023-03-14

我有一个自定义服务,其中我使用的是MicrosoftIDataProtector。 我已经在启动时用addscoped注册了我的服务,但是我对使用IDataProtector有问题。

错误消息:试图激活“service”时,无法解析类型“Microsoft.AspNetCore.DataProtection.IDataProtector”得服务。

下面是我的代码:

 public class Service: IInjectable
{
    private readonly IDataProtector _protector;
     
    public Service(IDataProtector protector)
    {
      _protector = protector.CreateProtector("key");
    }

   other code ...
}

我注册服务的方式:

 public static void RegisterScoped<T>(this IServiceCollection services, params Assembly[] assemblies)
    {
        IEnumerable<Type> types = assemblies.SelectMany(a => a.GetExportedTypes())
            .Where(c => c.IsClass && typeof(T).IsAssignableFrom(c));

        foreach (var item in types)
            services.AddScoped(item);
    }

启动:

 services.RegisterScoped<IInjectable>(typeof(IInjectable).Assembly);

共有1个答案

蔡楚
2023-03-14

终于发现问题了:

我必须在服务构造函数中使用IDataProtectionProvider而不是IDataProtector

 类似资料:
  • 在我的ASP. NET Core应用程序中,我收到以下错误: 无效操作异常:在尝试激活“城市”时无法解析类型“城市”的服务。模型。IRepository。控制器。HomeController。 我是家庭控制器,我试图将城市的getter传递给视图,如下所示: 我有一个文件存储库。cs包含一个接口及其实现,如下所示: 我的启动类包含从模板生成的默认代码。我做了任何更改:

  • 我正在用ASP开发一个Web API。净核心。当我使用post请求执行API时,在UnitController的post方法的断点之前会引发异常。 例外 请求启动HTTP/1.1 POSThttp://localhost:5000/api/unit应用程序/json 31失败:Microsoft. AspNetCore. Server. Kestrel[13]连接ID"0HKVTL9A1LTD4"

  • 问题内容: 这是我得到的错误: 这是我的代码: 另外,我在一个单独的类中声明了这一点: 是什么导致此错误,我该如何解决? 编辑:缩进,空格,命名约定和可读性问题已得到解决。 问题答案: 问题在于,这似乎是一个内部类(很难说,您的缩进是不好的),并且由于它不是静态的,因此您无法单独实例化它。 您要么需要自己创建一个类,要么使其成为一个类并将其实例化为(或者无论父类是什么,您的缩进在这里实际上都没有帮

  • 问题内容: 尝试遵循本教程:教程 尝试像这样使用 JSONParser : 但是Eclipse给了我。 该怎么办? 问题答案: JSONParser类在本教程的下方,它看起来像这样…… 我会考虑看看杰克逊图书馆通过http://jackson.codehaus.org/

  • 问题内容: 我从git下载了Android的Browser项目并将其导入到Eclipse。但是由于以下错误,我无法构建它: 无法解析类型java.lang.Enum。从所需的.class文件间接引用它 现在…这是一个开发环境,对于其他项目来说效果很好: Windows 7 Ultimate 64位。 JDK 64位(已安装jdk-6u23-windows-x64.exe。) Eclipse Cla

  • 我正在尝试将主题添加到我的项目中。它需要appcompat v7。 我按照Android开发者网站中提到的步骤添加了支持库。经过大量搜索,我知道支持库v4将与支持库v7冲突。 所以我从我的项目中删除了android库v4。因此,现在我得到了t错误()。 我必须做什么?请有人帮我解决这个问题。预先感谢

  • 在我的testrunner类中,当使用时,我收到一条错误消息,说“cucumberoptions不能解析为类型”。我使用的是最新版本的eclipse cucumber依赖项。通过安装和卸载eclipse,通过降低cucumber依赖项版本,我已经尝试了所有可能的方法。 我的跑者班是:

  • 我创建了一个RunTest类来使用Cucumber和JUnit运行测试场景。要运行之前的测试,我需要将RunWith类(@RunWith)导入到我的项目中,并将Cucumber.class作为参数传递。然后,类的RunWith参数识别更多传递给它的参数,不。eclipse将显示以下消息: 无法将此行类中的多个标记解析为类型。-Cucumber无法解析为类型。-注释@runwith必须定义属性值 我