我想將檔案資料加載到program.cs(.net core 6.0)上的快取中,加載的資料將在許多服務中使用。
所以我輸入builder.Services.AddMemoryCache();了源代碼。
但是,然后,我不知道如何在此處(在 program.cs 中)使用此記憶體快取。
在以前的版本中,通過Configure方法和IMemoryCache cache引數,我可以使用記憶體快取加載資料,如下面的代碼塊
public void Configure(IMemoryCache cache)
{
cache.set(...);
cache.get(...);
}
我正在使用 .net core 6.0 web api 進行開發。有人知道如何在 .net core 6.0 中的 program.cs 上初始化資料嗎?
uj5u.com熱心網友回復:
下面是一個作業demo,大家可以參考一下。
選項1
在 Web 主機構建后執行此操作,在 Program.cs 中:
...
builder.Services.AddMemoryCache();
var app = builder.Build();
var cache=app.Services.GetRequiredService<IMemoryCache>();
cache.Set("key1", "value1");
...
選項 2
使用托管服務初始化快取:
public class InitializeCacheService : IHostedService
{
private readonly IServiceProvider _serviceProvider;
public InitializeCacheService (IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public Task StartAsync(CancellationToken cancellationToken)
{
using (var scope = _serviceProvider.CreateScope())
{
var cache = _serviceProvider.GetService<IMemoryCache>();
cache.Set("key1", "value1");
}
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
在 Program.cs 中,添加以下代碼:
builder.Services.AddMemoryCache();
builder.Services.AddHostedService<InitializeCacheService>();
ValuesController(兩個選項都使用這個控制器)
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
private readonly IMemoryCache _cache;
public ValuesController(IMemoryCache cache)
{
_cache = cache;
}
[HttpGet("{key}")]
public ActionResult<string> Get(string key)
{
//_cahce.Count is 0
if (!_cache.TryGetValue(key, out var value))
{
return NotFound($"The value with the {key} is not found");
}
return value "";
}
}
結果:

更新

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/476507.html
標籤:C# asp.net 核心 asp.net-core-webapi 内存缓存
上一篇:獲取特定型別的泛型類的實體
