.Net Core 2.1缓存标记帮助器

时间:2018-09-29 21:24:27

标签: c# asp.net-core

似乎无法正常工作。真的很简单...

<cache expires-after="@TimeSpan.FromMinutes(10)">
    @DateTime.Now
</cache>   

在VSExpress中的VS2017中(在IIS 10中也是如此)在浏览器(Chrome)中运行刷新,这只是给我当前时间?我正在使用.Net Core 2.1。我正在部分和视图组件中尝试它,但它只是不缓存。

我不确定自己在做什么错。

为了记录,我添加了。

services.AddMemoryCache();

启动Startup ConfigureServices方法(尽管根据文档(https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper?view=aspnetcore-2.1),我什至不需要这样做,因为它是自动添加的-它在底部如此显示。

这也正在使用Razor页面

2 个答案:

答案 0 :(得分:2)

问题可能是您尚未添加标签助手。作为故障排除步骤,请将标签助手添加到具有<cache>元素的视图中。

_SomePartial.cshtml

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<cache expires-after="@TimeSpan.FromMinutes(10)">
    @DateTime.Now
</cache>

如果这可以解决问题,则您可能希望将the tag helpers available放在整个目录中,而不仅仅是一个文件。通过将addTagHelper指令移动到_ViewImports.cshtml文件中来实现。

答案 1 :(得分:0)

还有另一种可能使cache标签助手无法工作。

即使我正确添加了Microsoft标记帮助程序,我也遇到了同样的问题,我的错误是我将DateTime.Now用于expires-on属性。见下文

<cache expires-on="DateTime.Now.AddDays(1)"> @DateTime.Now </cache>

现在日期时间DateTime.Now不应用于cache标记帮助程序,因为每次刷新页面时expires-on的值都会更改,并导致框架重新添加该条目使用新的expires-on进行缓存。

我将expires-on="DateTime.Now.AddDays(1)"更改为expires-after="@TimeSpan.FromMinutes(43200)",并且有效。