今天 无意看到Asp.net Core中使用Session ,首先要使用Session就必须添加Microsoft.AspNetCore.Session包,默认Session是只能存去字节,所以如果你想存取string的,那么还的引入Microsoft.AspNetCore.Http.Extensions包,那么在Startup.cs的ConfigureServices方法里面添加      services.AddSession(); (在 services.AddMvc()之前),在Configure方法添加   app.UseSession(); ( app.UseMvc()之前) 这样就可以使用Session了,默认Session是字节方式,这里我们使用json来序列化对象:

 public static class SessionExtensions
{
public static void Set(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
} public static T Get<T>(this ISession session, string key)
{
var value = session.GetString(key); return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}

使用方式:

var city = new City { ID = 1, CountryCode = "123", Name = "city", District = "District test", Population = " Population test" };
HttpContext.Session.Set("city", city);
var c2 = HttpContext.Session.Get<City>("city");

如何保存到Redis中了?

首先需要添加对应的包Microsoft.Extensions.Caching.Redis,再调用AddDistributedRedisCache如下:

    public void ConfigureServices(IServiceCollection services)
{
// string mysqlConnectiong = Configuration.GetConnectionString("MySQL");
string redisConnectiong = Configuration.GetConnectionString("Redis");
services.AddSession();
services.AddDistributedRedisCache(option=>option.Configuration=redisConnectiong);
services.AddMvc();
}

配置如下:

{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"MySQL": "server=localhost;port=3306;uid=root;pwd=;database=word;charset=utf8;max pool size=1000;",
"Redis": "127.0.0.1:6379,abortConnect=false,connectRetry=3,connectTimeout=3000,defaultDatabase=1,syncTimeout=3000,version=3.2.1,responseTimeout=3000"
}
}

这样Session就可以保存到Redis了。

缓存的使用也很简单

IDistributedCache Cache;
public ValuesController(IDistributedCache cache) {
Cache = cache;
} Cache.SetString("test", "Gavin");
var vc = Cache.GetString("test");

我们在项目类库如何读配置文件

public class ConfigurationManager
{
/*
Microsoft.Extensions.Options.ConfigurationExtensions
Microsoft.Extensions.Configuration.Abstractions
Microsoft.AspNetCore.Http.Extensions
  Microsoft.Extensions.DependencyInjection
*/
static IConfiguration Configuration; static ConfigurationManager()
{
var baseDir = AppContext.BaseDirectory;
Configuration = new ConfigurationBuilder()
.SetBasePath(baseDir)
.Add(new JsonConfigurationSource { Path = "appsettings.json", Optional = false, ReloadOnChange = true })
.Build();
} public static T GetAppSettings<T>(string key) where T : class, new()
{
var appconfig = new ServiceCollection()
.AddOptions()
.Configure<T>( Configuration.GetSection(key))
.BuildServiceProvider()
.GetService<IOptions<T>>()
.Value;
return appconfig;
} } public class ConnectionStrings
{
public string MySQL { set; get; }
public string Redis { set; get; }
}

单独访问Redis:

public class CityService
{
/*
* StackExchange.Redis
*/
static IDatabase redis;
static object lobject = new object();
public CityService()
{
if (redis == null)
{
lock (lobject)
{
if (redis == null)
{
var connection = ConfigurationManager.GetAppSettings<ConnectionStrings>("ConnectionStrings");
ConnectionMultiplexer connectionMultiplexer = ConnectionMultiplexer.Connect(connection.Redis);
redis = connectionMultiplexer.GetDatabase();
}
}
} } public IDatabase Redis { get { return redis; } }
}

读取MySql

  public List<City> TestDB()
{
/*MySql.Data*/
List<City> list = new List<City>();
using (MySqlConnection con = new MySqlConnection(MySqlConnectionStr))
{
MySqlCommand cmd = new MySqlCommand("SELECT ID, NAME,CountryCode, District, Population FROM city ;", con);
con.Open();
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
list.Add(new City
{
ID = reader.GetInt32("ID"),
Name = reader.GetString("NAME"),
CountryCode = reader.GetString("CountryCode"),
District = reader.GetString("District"),
Population = reader.GetString("Population")
});
}
}
}
return list;
}

参考  ASP.NET Core实现类库项目读取配置文件

ASP.NET Core实现强类型Configuration读取配置数据

4.3 可配置的分布式缓存(上)

Asp.net Core 使用Redis存储Session

最新文章

  1. .NET Framework (代码库、通用类型系统CTS、CLR) 简介
  2. SHOW SLAVE STATUS几个常见参数
  3. android开发系列之由ContentValues看到的
  4. 导出excel——入门
  5. .net 接口返回json格式示例
  6. iOS获取一个方法的执行时间
  7. Kettle 连接失败 Oracle 数据库报 ora-12505 的解决方法(转)
  8. 第二次冲刺spring会议(第二次会议)
  9. js 基础对象一
  10. javascript入门知识点总结(一)
  11. PHP call_user_func
  12. #Java学习之路——基础阶段二(第六篇)
  13. CSS3 border-radius 圆角
  14. mvn依赖冲突
  15. 【iCore4 双核心板_ARM】例程十二:通用定时器实验——定时点亮LED
  16. Markdown 代码
  17. BZOJ2560串珠子
  18. 把html标签转换为实体 dhtmlspecialchars
  19. win10系统自带的浏览器ME如何将网页转成PDF
  20. vue框架搭建的详细步骤(一)

热门文章

  1. (四)CXF处理JavaBean以及复合类型
  2. 步步为营-57-JQuery练习题
  3. Oracle学习笔记--第2章 oracle 数据库体系结构
  4. springboot项目连接数据库报错
  5. (APIO2014)序列分割
  6. google gcr.io、k8s.gcr.io 国内镜像
  7. python全栈开发day36-IO多路复用
  8. printf的执行顺序
  9. ListView优化中的细节问题
  10. Linux学习之常用权限管理命令(二)