在ASP.NET Core 2.1中,可以使用内存缓存来存储临时数据。如果在中间件中设置了值,但在控制器中无法访问到该值,可能是因为没有正确地注册内存缓存服务。
以下是一个解决方案的示例代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddMvc();
}
public class MyMiddleware
{
private readonly RequestDelegate _next;
private readonly IMemoryCache _cache;
public MyMiddleware(RequestDelegate next, IMemoryCache cache)
{
_next = next;
_cache = cache;
}
public async Task Invoke(HttpContext context)
{
// 在中间件中设置缓存值
_cache.Set("myKey", "myValue");
await _next(context);
}
}
public class MyController : Controller
{
private readonly IMemoryCache _cache;
public MyController(IMemoryCache cache)
{
_cache = cache;
}
public IActionResult Index()
{
// 在控制器中访问缓存值
var value = _cache.Get("myKey");
return View();
}
}
通过以上步骤,你应该可以在控制器中访问到在中间件中设置的缓存值了。