我试图将一些库从旧的基于MVC5 System.Web的堆栈移植到.Net Core.我遇到的一个问题是缓存的变化.例如,在MVC5中,我能够读取和写入i18n相关数据:
[代码片段1]
public static Dictionary<string, IEnumerable<CoreDictionaryResource>> DictionaryResourcesCache {
    get { return (Dictionary<string, IEnumerable<CoreDictionaryResource>>)HttpContext.Current.Cache(string.Concat(_Dictionary, DictionaryID, CultureID)); }
    set { HttpContext.Current.Cache(string.Concat(_Dictionary, DictionaryID, CultureID)) = value; }
}
Run Code Online (Sandbox Code Playgroud)
但是,我可靠地告知它System.Web并且它HttpContext不包含Cache字段.我可以看到一个Current字段,然后在这个范围内的一大堆字段Application,Session但是唉没有Cache.
我已经完成了必要的操作,Startup.cs并且应用程序配置为在内存缓存和会话中使用.我知道会话有效,因为我有其他POCO缓存使用
[代码片段2]
 return System.Web.HttpContext.Current.Session.GetObject<User>("AuthenticatedUser");
Run Code Online (Sandbox Code Playgroud)
在GetObject我创建的扩展中的哪个位置.
我咆哮着试图用来HttpContext从缓存读出的错误的树,或者我需要使用IDistributedCache如此处, 这里和SO.
但实际上我只是在[代码片段1]中移植方法......
您可以在新的.Net Core上提供有关缓存的任何指针都非常有用.
仅供参考我不想在控制器和视图中使用任何逻辑.我正在构建的应用程序使用单独的DLL进行数据访问和逻辑,因此请不要将任何带有DI的示例发布到控制器中.在遇到MVC堆栈之前,此问题更多地处于基础架构级别.
谢谢你们和gals.