c# - 在我的 ASP.NET 应用程序中的什么地方注册 IMemoryCache?

标签 c# asp.net .net asp.net-mvc unity-container

我有一个从 Visual Studio 2015 Community Edition 创建的 ASP.NET Web 应用程序。 .NET Framework 是 4.6.1。

我不知道我的 Web 应用程序使用的是哪个版本的 ASP.NET MVC 4? ASP.NET MVC 5?任何地方都没有提到它。

我正在尝试将 IMemoryCache 服务(来自 Microsoft.Extensions.Caching.Memory)注册到我的 Microsoft Unity 容器中。但是,我在 Google 上发现的任何内容都涉及在 Startup.cs 文件中添加 services.AddCaching()

我没有 Startup.cs 文件。我只看到 Global.asax。此外,我所有的自定义依赖项都在 UnityConfig.cs 中注册,这是在安装 NuGet 包 Unity.Mvc 时提供的,它是 Microsoft 的 ASP.NET 的 Microsoft Unity Bootstrap 。

感谢任何帮助。

编辑:

这是我的项目的截图:

enter image description here

最佳答案

在 .NET Core 中,AddMemoryCache 扩展如下所示:

services.TryAdd(ServiceDescriptor.Singleton<IMemoryCache, MemoryCache>());

所以在 .Net Framework 中你可以使用这样的东西(对于 Autofac):

builder.RegisterType<MemoryCache>().As<IMemoryCache>().SingleInstance();

UPD:但是MemoryCache取决于 IOptions<>你也应该注册它:

builder.RegisterGeneric(typeof(OptionsManager<>)).As(typeof(IOptions<>)).SingleInstance();
builder.RegisterGeneric(typeof(OptionsManager<>)).As(typeof(IOptionsSnapshot<>)).InstancePerLifetimeScope();
builder.RegisterGeneric(typeof(OptionsMonitor<>)).As(typeof(IOptionsMonitor<>)).SingleInstance();
builder.RegisterGeneric(typeof(OptionsFactory<>)).As(typeof(IOptionsFactory<>));
builder.RegisterGeneric(typeof(OptionsCache<>)).As(typeof(IOptionsMonitorCache<>)).SingleInstance();

关于c# - 在我的 ASP.NET 应用程序中的什么地方注册 IMemoryCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570125/

相关文章:

c# - 如何调节磁贴图标的旋转速度?

c# - 如何返回一个空的 View 组件 MVC 6?

.net - 休眠多对多删除

.net - 将小数转换为小时和分钟

javascript - 奇怪的编码输出,里面有 "\u0026 quot;"

c# - 如何在 MS Graph API 中组合 NOT 过滤器

c# - Jagged Arrays 可以容纳的最大大小是多少?

c# - 在更改第一个 ddl 时使用 jquery ajax 绑定(bind)下拉列表

c# - 母版页 C# 3.0 中的 ASP.NET 网页全局化和本地化

c# - 基于多个复选框的 Gridview 过滤器