首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态Id - ASP.NET核心分布式缓存标签助手

静态Id - ASP.NET核心分布式缓存标签助手
EN

Stack Overflow用户
提问于 2021-04-26 11:28:47
回答 2查看 176关注 0票数 1

我们在server中使用ASP.NET核心分布式缓存标记帮助程序。

代码语言:javascript
复制
<distributed-cache name="MyCacheItem1" expires-after="TimeSpan.FromDays(1)">
   <p>Something that will be cached</p>
   @DateTime.Now.ToString()
</distributed-cache>

它储存在下面。

问题是Id列是自动散列的。我们需要Id列中一些有意义的字符串。有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-28 05:22:57

谢谢你,费韩。我从你的回答中得到了线索。

若要在Id列中存储自定义字符串,请执行以下操作。跟着台阶走。

  1. 使用IDistributedCacheTagHelperService实现自定义类(我创建的方式类似于IDistributedCacheTagHelperService)

  1. 在启动时注入此自定义类。services.AddScoped();

  1. 复制DistributedCacheTagHelperService (https://github.com/dotnet/aspnetcore/blob/52eff90fbcfca39b7eb58baad597df6a99a542b0/src/Mvc/Mvc.TagHelpers/src/Cache/DistributedCacheTagHelperService.cs#L102)的实际源代码。并粘贴在HtmlDistributedCacheTagHelperService.

内部

  1. I添加了自定义属性htmlcache-uniqueid。<分布式-缓存htmlcache-uniqueid="CustomStringId">

name="UniqueName“

  1. 在HtmlDistributedCacheTagHelperService类中添加了下面的代码以获取自定义属性。

如果(output.Attributes != null && output.Attributes.Count >0 && string.Equals(output.Attributes.Name,“htmlcache-唯一性”)& output.Attributes.Value !=空){ storageKey = Convert.ToString(output.Attributes.Value);}

最后,您可以看到id存储在db中,如下所示。

票数 0
EN

Stack Overflow用户

发布于 2021-04-27 06:11:37

问题是Id列是自动散列的。

从源代码中,我们可以发现这似乎是一种设计行为:

代码语言:javascript
复制
try
{
    var serializedKey = Encoding.UTF8.GetBytes(key.GenerateKey());
    var storageKey = key.GenerateHashedKey();
    var value = await _storage.GetAsync(storageKey);

    //...

    //...

    await _storage.SetAsync(storageKey, encodeValue, options);

,我们希望Id列中有意义的字符串。有可能吗?

如果您有需要Id列未散列数据的特定场景/需求,则可以参考DistributedCacheTagHelperDistributedCacheTagHelperService的源代码,然后实现自定义标记助手。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67265834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档