如何仅在ASP.NET Core中禁用缓存以进行开发?

时间:2019-04-05 06:48:24

标签: c# asp.net-core microsoft-extensions-caching

在开发环境中运行ASP.NET核心应用程序时,我想禁用缓存。我该怎么办?

我要在“启动”中设置缓存:

services.AddMemoryCache();

我想在使用<cache>标签的模板中禁用缓存:

<cache expires-after="@TimeSpan.FromSeconds(3600)">

2 个答案:

答案 0 :(得分:0)

您可以简单地将IHostingEnvironment注入到Startup.cs的启动构造函数中

      private readonly IHostingEnvironment _environment;

       public Startup(IConfiguration configuration,IHostingEnvironment environment)
       {
        _environment = environment;
        Configuration = configuration;
       }

然后,您可以在configures服务方法中使用私有的IHostingEnvironment

public void ConfigureServices(IServiceCollection services) 
{
 if(!_environment.IsDevelopment())
    services.AddMemoryCache();
}

编辑:

重新阅读问题后,也应禁用缓存标签。 我建议在您的appsettings.devlopment.json内添加一个名为"PageCachingEnabled": "false"的标志。

在视图上,我将像这样注入配置

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
<cache enabled=@Boolean.Parse(Configuration["PageCachingEnabled"]) expires-after="@TimeSpan.FromSeconds(3600)">

答案 1 :(得分:0)

诀窍是在开发中使用services.AddDistributedMemoryCache();,这会将正在运行的系统的内存用作缓存。

if(Env.IsDevelopment()) {
  services.AddDistributedMemoryCache();
} else {
  services.AddStackExchangeRedisCache();
}