配置 ASP.NET Core ID分布式缓存
你也可以使用 ASP.NET Core 会话与 NCache的 IDistributedCache
提供者。 ASP.NET Core 提供 AddDistributedMemoryCache
方法添加默认实现 ID分布式缓存。 然而,要利用 NCache 作为存储 ASP.NET 会话或对象的分布式缓存, NCache 提供了自己的扩展方法, AddNCacheDistributedCache
,这增加了 NCache 作为默认的分布式缓存的实现 IDistributedCache
.
配置 ASP 的先决条件.NET Core ID分布式缓存
- 根据您的应用程序在您的应用程序中安装以下 NuGet 包 NCache 版本:
- 要使用该扩展,请在您的应用程序中包含以下命名空间 启动文件:
- 缓存必须正在运行。
- 有关 API 详细信息,请参阅: 地址NCache分布式缓存, 地址NCache分布式缓存提供者.
- 确保要添加的数据是 可序列化.
- 为确保操作是故障安全的,建议处理应用程序中的任何潜在异常,如中所述 处理故障.
- 要处理任何看不见的异常,请参阅 故障排除 部分。
第 1 步:配置服务
NCache 提供 AddNCacheDistributedCache
扩展方法 IServiceCollection
,它只需要一个缓存名称 NCache 以及用于存储会话的任何可选配置。 配置对象相同 NCache ASP.NET Core Session Provider,可以类似地初始化。 可以通过以下方式提供配置 IOptions
初始化器也是如此。
有两种方法可以指定配置:
- 通过您的申请 启动文件 or
- 在 JSON 格式中 应用设置.json 您的应用程序。
方法一:在 Startup.cs 中指定配置
为单个缓存配置 Startup.cs:
AddNCacheDistributedCache
方法是扩展 AddDistributedCache
ASP提供的方法.NET Core。 此方法采用配置设置 启动文件 您的应用程序的,或从指定的 JSON 文件中读取它们。
添加以下方法和选项 启动文件 您的应用程序:
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
services.AddNCacheDistributedCache(configuration =>
{
configuration.CacheName = "demoCache";
configuration.EnableLogs = true;
configuration.ExceptionsEnabled = true;
});
}
为多个缓存配置 Startup.cs:
备注
此功能可用于 NCache Enterprise 只。
AddNCacheDistributedCacheProvider
是对 AddDistributedCache
ASP提供的方法.NET Core。 此方法采用配置设置 启动文件 您的申请。 您可以使用以下命令配置多个缓存 AddNCacheDistributedCacheProvider
方法如下:
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
services.AddNCacheDistributedCacheProvider( options =>
{
options.CacheConfigurations = new NCacheConfiguration[] {
new NCacheConfiguration() {
CacheName = "demoClusteredCache",
EnableLogs = true,
ExceptionsEnabled = true
},
new NCacheConfiguration(){
CacheName = "demoCache",
EnableLogs = true,
ExceptionsEnabled = true }
};
});
}
方法二:在 Appsettings.json 中指定配置
您还可以在应用程序中以 JSON 格式指定配置 应用设置.json 您的应用程序。 使用此方法,您可以通过在中提供包含 JSON 格式配置的部分的名称来引用配置 启动文件.
为单个缓存配置 Appsettings.json: 配置 应用设置.json 您的应用程序的文件来配置单个缓存,如下所示:
{
"AppSettings": {
"SiteTitle": "ASP.NET MVC Music Store",
"CacheDbResults": true,
},
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"RequestTimeout": "90"
},
}
请参阅中的这些配置 启动文件 如下:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container
services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
services.AddSession();
}
为多个缓存配置 Appsettings.json:
配置 应用设置.json 您的应用程序的文件来配置多个缓存,如下所示:
"NCacheFactorySettings": {
"NCacheConfigurations": [
{
"CacheName": "demoClusteredCache",
"EnableLogs": true,
"RequestTimeout": "90"
},
{
"CacheName": "demoCache",
"EnableLogs": true,
"RequestTimeout": "90"
},
{
// Configure more caches
}
]
}
使用 AddNCacheDistributedCacheProvider
方法可参考 NCacheFactorySettings
部分 启动文件:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container
services.AddNCacheDistributedCacheProvider(_config.GetSection("NCacheFactorySettings"));
services.AddSession();
}
第 2 步:将中间件添加到应用程序
一旦分布式缓存被添加到服务中,会话就可以将数据存储在 NCache。 该 UseSession
ASP提供的扩展方法.NET Core 将向应用程序添加默认会话中间件,但将利用 NCache 作为它的缓存。
您现在可以继续 使用 NCache 作为底层缓存 为您的 ASP.NET Core 会议。
配置属性
下面解释了特定于分布式缓存的配置:
参考 CacheConnectionOptions API 文档 有关此类属性的更多详细信息。
委员 | Type | 产品描述 | 默认值 |
---|---|---|---|
CacheName |
string (必填) |
指定用于缓存会话的缓存名称。 如果没有指定缓存名称,将会抛出配置异常。 | - |
EnableLogs |
bool (可选) |
如果设置了这个标志, NCache 记录所有错误信息。 日志文件创建于 %NCHOME%\log-files\SessionState (Windows)或 /opt/ncache/log-files/SessionState (Linux)。 |
false |
EnableDetailLogs |
bool (可选) |
设置此标志时, NCache 记录所有调试信息。 日志文件创建于 %NCHOME%\log-files\SessionState (Windows)或 /opt/ncache/log-files/SessionState (Linux)。 |
false |
ExceptionsEnabled |
bool (可选) |
指定是否将缓存 API 的异常传播到页面输出。 设置此标志在应用程序的开发阶段特别有用,因为异常提供了有关失败的具体原因的更多信息。 | false |
WriteExceptionsToEventLog |
bool (可选) |
如果设置了此标志,缓存 API 中的所有异常都将写入事件日志。 | false |
RequestTimeout |
int |
以秒为单位指定客户端请求的超时时间。 | 90 |
OperationsRetry |
int (可选) |
指定在执行操作时连接丢失时服务器重试操作的次数。 | 0 |
OperationRetryInterval |
int (可选) |
指定每次操作重试之间的时间间隔。 | 0 |
参见
.NET: Alachisoft.NCache.缓存.分布式 命名空间。