【问题标题】:use IMemoryCache in AuthorizationFilter class在 AuthorizationFilter 类中使用 IMemoryCache
【发布时间】:2019-06-15 22:46:03
【问题描述】:

如何在依赖注入中添加 IMemoryCache 我想使用它,但是当我在代码中添加它时,如下所示,它在 startup.cs 文件中显示错误如何在 Startup.cs 中添加 IMemoryCache 的参数
Startup.cs 错误

错误 CS0542 'HMACAuthenticationAttribute': 成员名称不能是 和它们的封闭类型一样

  public class HMACAuthenticationAttribute : Attribute, IAuthorizationFilter
    {
     private IMemoryCache _cache;
              public HMACAuthenticationAttribute(IMemoryCache cache)
                    {
                        _cache = cache;
                    }
   }


     services.AddMvc(options => options.Filters.Add(new HMACAuthenticationAttribute())).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

【问题讨论】:

  • 获得该错误的唯一方法是,如果您在此类上有一个名为 HMACAuthenticationAttribute 的字段或属性。发布的代码没有这样的成员,所以我只能假设您已经编辑了部分代码,这当然会掩盖问题所在。发布真正的代码,或者只是阅读异常告诉您的内容并修复它。这很简单。
  • 另外,对于它的价值,你不能注入属性。但是,您实际上并没有将其用作属性,所以没关系。因此,您不应该从Attribute 继承,因为它既不必要又具有误导性:如果您实际上确实 将其用作属性,它将失败,因为_cache 将是未定义的。

标签: asp.net-core-mvc asp.net-core-2.0 asp.net-core-webapi


【解决方案1】:

如何在依赖注入中添加IMemoryCache

您可以在 Startup.cs 类的ConfigureServices() 方法中使用services.AddMemoryCache();IMemoryCache 实例注册到DI 管道。这应该可以解决您的问题。欲了解更多信息,请查看this 微软官方页面。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多