这篇文章将为大家详细讲解有关Asp.NetCore1.1版本去掉project.json后怎么打包生成跨平台包,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强> AspNetCore中使用会话(基于MemoryCache组件)强>
这节内容看起来有点不符合文章标题,主要是只写生成跨平台包的内容太少,有些朋友觉得干活太少不满意,因此就用这如果使用会话来填充吧哈哈(我的理念是:一天一进步,哪怕一丁点);对于一个web程序来说会话存储通常有很多种方式,例如我前面文章有使用复述来存储会话的相关文章,那对于一个netcore项目来说默认会话存储的方式是MemoryCache的方式,可以这样在项目中的启动。cs文件中ConfigureServices方法增加如下代码片段:
services.AddDistributedMemoryCache (); ,services.AddSession (b =比; ,{=,,b.IdleTimeout  TimeSpan.FromMinutes (1); 5, b.CookieName =,“MySid"; 以前,});>并在<强> 强>配置方法中添加<强> app.UseSession ();强>会话的使用,当把上面的代码片段复制到你程序中时,会提示一个小灯泡,需要你点击选择引用下对应的包,对于vs2017自动装了netcore的开发环境,所以只需要点击灯泡引用就行了,如果你没有装开发sdk,那么需要下载nuget包:<强> Microsoft.AspNetCore。会话>强;第一段<强> services.AddDistributedMemoryCache() 强>主要作用是添加memorycache存储引用,第二段AddSession方法才是真正添加会话相关的东西,这里我用到的两个个属性:
1。IdleTimeout:设置会话过期时间,
2。CookieName:设置sessionId存储在客户端浏览器中关键的名称;
当完成上面步骤的操作后,可以在任意控制器(这里是HomeController)的行动中使用<强> HttpContext.Session。设置>强方法添加会话:
public IActionResult 约() ,{ _logger.LogInformation才能(“这里是About"); var 才能;userInfo =,“我的NetCore之Session"; HttpContext.Session.Set才能(SessionKey, System.Text.Encoding.UTF8.GetBytes(用户信息)); 视讯系统才能[“Message"],=,美元“读取配置文件Option1节点值:{this._options.Option1},添加session"; return 才能视图(); 以前,}>再通过另外联系的行动中使用<强> HttpContext.Session。TryGetValue (SessionKey var bt) 强>来获取我们刚设置的会话:
public IActionResult 接触() ,{ var 才能;userInfo =, string.Empty; if 才能;(HttpContext.Session.TryGetValue (SessionKey, out var bt)) {才能 时间=userInfo 才能;System.Text.Encoding.UTF8.GetString (bt); ,,} 视讯系统才能[“Message"],=, string.IsNullOrWhiteSpace(用户信息),?,“会话获取为空,,:,用户信息; return 才能视图(); 以前,}>好了就这么简单,咋们运行看下效果:dontnet运行命令来运行测试站点,不出意外会在界面得到如下截图:
通过浏览器控制台能够看到咋们的sessionId的名称是虾,这个正如我们在<强>启动。cs 强>设置的CookieName一样呢,,
<强> ISession扩展方法强>
上面用到组的方法来保存sesseion,咋们来看看她的参数<强>空集(字符串键,byte[]值);>强键值对的方式,但是值是一个byte[]类型的参数,我们每次使用的时候都需要自己转一下数据类型感觉不是很方便,那么我们通过扩展方法的方式来扩展下ISession,如下扩展代码:
public static class PublicExtensions ,{ ,# region ISession扩展 ,///& lt; summary> ,///设置会话 ,///& lt;/summary> ,///& lt; typeparam name=癟"祝辞& lt;/typeparam> ,///& lt; param name=皊ession"祝辞& lt;/param> ,///& lt; param name=発ey"祝辞& lt;/param> ,///& lt; param name=皏al"祝辞& lt;/param> ,///& lt; returns> & lt;/returns> ,public static  bool Set< T>(却;能够ISession 会话,string 关键,,T val) ,{ if 才能;(string.IsNullOrWhiteSpace(键),| |,val ==, null), {, return 虚假,} var 才能;strVal =, JsonConvert.SerializeObject (val); var 才能;bb =, Encoding.UTF8.GetBytes (strVal); session.Set才能(钥匙,,bb); return 才能;真实; ,} ,///& lt; summary> ,///获取会话 ,///& lt;/summary> ,///& lt; typeparam name=癟"祝辞& lt;/typeparam> ,///& lt; param name=皊ession"祝辞& lt;/param> ,///& lt; param name=発ey"祝辞& lt;/param> ,///& lt; returns> & lt;/returns> ,public static  T Get< T>(却;能够ISession 会话,string 键) ,{ var 才能;t =,违约(T); if 才能;(string.IsNullOrWhiteSpace(关键),{,return t,} if 才能;(session.TryGetValue(钥匙,,out byte [], val)) {才能 var 才能;strVal =, Encoding.UTF8.GetString (val); 时间=t 才能;JsonConvert.DeserializeObjectAsp.NetCore1.1版本去掉project.json后怎么打包生成跨平台包