【问题标题】:How to disable cache for development only in ASP.NET Core?如何仅在 ASP.NET Core 中禁用用于开发的缓存?
【发布时间】:2019-04-05 06:48:23
【问题描述】:

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

我正在启动中设置缓存:

services.AddMemoryCache();

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

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

【问题讨论】:

  • 您能否展示一下您是如何设置缓存的,或者如果您不可以展示/解释缓存了什么?
  • @AntonToshik 我添加了设置/用例
  • 我假设您正在寻找 1 行代码开/关开关,并且不想明确指定要关闭的部分。

标签: c# asp.net-core


【解决方案1】:

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

像这样

      private readonly IHostingEnvironment _environment;

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

然后您可以在您的配置服务方法中使用私有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)">

【讨论】:

  • @KunalMukherjee 他想在 asp net core 环境变量设置为“开发”即机器上的环境变量时禁用缓存。 IHostingEnvironment 具体实现中包含一个代码抽象,它围绕当前环境设置提供帮助函数。在上面的代码中,只有在环境不是开发环境中才会添加内存缓存,因此“禁用”它。除非我误解了这个问题,否则这就是他想要实现的目标
  • 所以他可以直接从构建设置中设置ASPNETCORE_ENVIRONMENT变量
  • @KunalMukherjee 好吧,是吗?但他只希望这不会发生在开发中,我看不出更改该变量如何神奇地解决此问题,只是更改该变量可能会导致从 appsettings.json 转换加载完全其他配置。无论环境如何,他当前的代码都会始终添加内存缓存。我的回答只是简单介绍了他不在Development时添加缓存的概念。
  • 内部_environment.IsDevelopment() 只是去检查ASPNETCORE_ENVIRONMENT 是否设置为Development
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2013-06-02
    • 2011-03-11
    • 2013-06-03
    • 2017-04-28
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多