【问题标题】:Inject an instance of an IOptions<>注入 IOptions<> 的实例
【发布时间】:2019-06-18 06:01:54
【问题描述】:

我需要访问我的 JwtSettings 的值。我尝试将 IOptions 类的实例注入到我的类的构造函数中,但我遇到了问题:

 public class JwtHandler : IJwtHandler
 {
    private readonly JwtSettings _jwtSettings;

    public JwtHandler(IOptions<JwtSettings> jwtSettings)
    {
        jwtSettings = _jwtSettings.Value;
    } 
 }

我有错误:

The type or namespace name 'IOptions<>' could not be found 
(are you missing a using directive or an assembly reference?)

当我添加使用时:

using Microsoft.Extensions.Options;

VS 告诉我这是不必要的。

更新:我的组件:

Microsoft.IdentityModel.Tokens    
System.IdentityModel.Tokens.Jwt

【问题讨论】:

  • 如果指定全名Microsoft.Extensions.Options.IOptions&lt;JwtSettings&gt;怎么办?
  • 相同的....命名空间找不到
  • 您是否引用了具有该命名空间和类型的程序集?
  • 我刚刚将我所有的程序集添加到问题中
  • 尝试添加对包Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Options.ConfigurationExtensions的引用。

标签: c# dependency-injection jwt extension-methods asp.net-core-webapi


【解决方案1】:

IOptions&lt;T&gt; 肯定在Microsoft.Extensions.Options 命名空间中,所以这就是你需要的用法:

using Microsoft.Extensions.Options

至于为什么它可能会告诉你它是不必要的,这是一个脑筋急转弯。我唯一能想到的就是你的项目中有些东西很糟糕。打开您的项目文件夹并删除 bin 和 obj 目录。然后重建你的项目。如果仍然无法正常工作,则可能是版本冲突。检查所有引用的项目,如果有任何明确包括Microsoft.Extensions.ConfigurationMicrosoft.AspNetCore 等,请确保它们都引用了这些 NuGet 包的相同版本。

【讨论】:

  • 我已经检查了所有程序集,缺少的是 NuGet JwtBearer 包已添加到 WebApi 中,而不是用于基础设施项目......无论如何感谢您的帮助和对丢失程序集的关注,参考,NuGets....
猜你喜欢
  • 2019-09-08
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多