国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

2020-05-08 14:40神牛步行3 ASP.NET教程

這篇文章主要為大家詳細介紹了Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本章將要和大家分享的是Asp.NetCore1.1版本去掉了project.json后如何打包生成跨平臺包, 為了更好跟進AspNetCore的發(fā)展,把之前用來做netcore開發(fā)的vs2015卸載后并安裝了vs2017,這給我?guī)淼闹苯雍锰幨前盐覉蠹t的C盤騰出10GB左右的空間,從這里直接能感受到vs2017體積如此之小;之前有寫過一篇開源netcore服務的文章開源一個跨平臺運行的服務插件 - TaskCore.MainForm,里面有講述netcore項目生成和部署在win7和ubuntu16.04系統(tǒng)上的例子,感興趣的朋友可以去看看;下面開始本文的內(nèi)容,希望大家能夠喜歡,也希望各位多多"掃碼支持"和"推薦"謝謝!

AspNetCore中使用Session(基于MemoryCache組件)

這節(jié)內(nèi)容看起來有點不符合文章標題,主要是只寫生成跨平臺包的內(nèi)容太少,有些朋友覺得干活太少不滿意,因此就用這如果使用Session來填充吧哈哈(我的理念是:一天一進步,哪怕一丁點);對于一個web程序來說session存儲通常有很多種方式,例如我前面文章有使用Redis來存儲session的相關文章,那對于一個netcore項目來說默認session存儲的方式是memorycache的方式,可以這樣在項目中的 Startup.cs 文件中 ConfigureServices 方法增加如下代碼片段:

?
1
2
3
4
5
services.AddDistributedMemoryCache();
 services.AddSession(b =>
 {
 b.IdleTimeout = TimeSpan.FromMinutes(1);5 b.CookieName = "MySid";
 });

并在 Configure 方法中添加 app.UseSession(); session的使用;當把上面的代碼片段復制到你程序中時,會提示一個小燈泡,需要你點擊選擇引用下對應的包,對于vs2017自動裝了netcore的開發(fā)環(huán)境,所以只需要點擊燈泡引用就行了,如果你沒有裝開發(fā)sdk,那么需要下載nuget包: Microsoft.AspNetCore.Session ;第一段 services.AddDistributedMemoryCache() 主要作用是添加memorycache存儲引用,第二段AddSession方法才是真正添加session相關的東西,這里我用到的兩個個屬性:

1. IdleTimeout:設置session過期時間;

2. CookieName:設置sessionId存儲在客戶端瀏覽器中的key名稱;

當完成上面步驟的操作后,可以在任意Controller(這里是HomeController)的Action中使用 HttpContext.Session.Set 方法添加session:

?
1
2
3
4
5
6
7
8
9
public IActionResult About()
 {
  _logger.LogInformation("這里是About");
 
  var userInfo = "我的NetCore之Session";
  HttpContext.Session.Set(SessionKey, System.Text.Encoding.UTF8.GetBytes(userInfo));
  ViewData["Message"] = $"讀取配置文件Option1節(jié)點值:{this._options.Option1},添加session";
  return View();
 }

再通過另外Contact的Action中使用 HttpContext.Session.TryGetValue(SessionKey, out var bt) 來獲取我們剛設置的session:

?
1
2
3
4
5
6
7
8
9
10
11
public IActionResult Contact()
 {
  var userInfo = string.Empty;
  if (HttpContext.Session.TryGetValue(SessionKey, out var bt))
  {
  userInfo = System.Text.Encoding.UTF8.GetString(bt);
  }
 
  ViewData["Message"] = string.IsNullOrWhiteSpace(userInfo) ? "Session獲取為空" : userInfo;
  return View();
 }

好了就這么簡單,咋們運行看下效果:dontnet run 命令來運行測試站點,不出意外會在界面得到如下截圖:

Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

通過瀏覽器控制臺能夠看到咋們的sessionId的名稱是MySid,這個正如我們在 Startup.cs 設置的CookieName一樣呢; 

ISession擴展方法

上面用到的Set方法來保存sesseion,咋們來看看她的參數(shù) void Set(string key, byte[] value); 鍵值對的方式,但是值是一個byte[]類型的參數(shù),我們每次使用的時候都需要自己轉(zhuǎn)一下數(shù)據(jù)類型感覺不是很方便,那么我們通過擴展方法的方式來擴展下 ISession ,如下擴展代碼:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public static class PublicExtensions
 {
 #region ISession擴展
 
 /// <summary>
 /// 設置session
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="session"></param>
 /// <param name="key"></param>
 /// <param name="val"></param>
 /// <returns></returns>
 public static bool Set<T>(this ISession session, string key, T val)
 {
  if (string.IsNullOrWhiteSpace(key) || val == null) { return false; }
 
  var strVal = JsonConvert.SerializeObject(val);
  var bb = Encoding.UTF8.GetBytes(strVal);
  session.Set(key, bb);
  return true;
 }
 
 /// <summary>
 /// 獲取session
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="session"></param>
 /// <param name="key"></param>
 /// <returns></returns>
 public static T Get<T>(this ISession session, string key)
 {
  var t = default(T);
  if (string.IsNullOrWhiteSpace(key)) { return t; }
 
  if (session.TryGetValue(key, out byte[] val))
  {
  var strVal = Encoding.UTF8.GetString(val);
  t = JsonConvert.DeserializeObject<T>(strVal);
  }
  return t;
 }
 
 #endregion
 }

直接傳遞一個對象T到擴展方法中,轉(zhuǎn)類型后再存儲的session中去,為了更好的測試我們直接在上面測試用例上修改代碼如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public IActionResult About()
 {
  _logger.LogInformation("這里是About");
 
  //var userInfo = "我的NetCore之Session";
  //HttpContext.Session.Set(SessionKey, System.Text.Encoding.UTF8.GetBytes(userInfo));
 
  MoUser user = new MoUser();
  HttpContext.Session.Set<MoUser>(SessionKey, user);
  ViewData["Message"] = $"讀取配置文件Option1節(jié)點值:{this._options.Option1},添加session";
  return View();
 }
 
 public IActionResult Contact()
 {
  //var userInfo = string.Empty;
  //if (HttpContext.Session.TryGetValue(SessionKey, out var bt))
  //{
  // userInfo = System.Text.Encoding.UTF8.GetString(bt);
  //}
 
  //ViewData["Message"] = string.IsNullOrWhiteSpace(userInfo) ? "Session獲取為空" : userInfo;
 
  var user = HttpContext.Session.Get<MoUser>(SessionKey);
  ViewData["Message"] = user == null ? "Session獲取為空" : $"昵稱:{user.UserName}";
  return View();
 }

看起來set或get的session操作都只需一句代碼就完成了是不是方便了許多呢,最有命令:dotnet run 測試下效果,和上面的一樣我就不截圖了;

1.1版本去掉了project.json后,如何生成跨平臺包

到這里就進入今天的正題了,對于最新版本netcore去掉project.json網(wǎng)上討論的還算比較激烈,但是網(wǎng)搜了下還沒有一篇正式的中文文章來講述如果生成夸平臺包,這里有幸或許吧成為第一篇吧呵呵;首先,要明了netcore小組去掉project.json重要文件后,其任務都放在了項目的.csproj文件中,沒錯就是咋們vs生成的項目工程文件,那上面測試用例為例我們看下.csproj文件的內(nèi)容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<Project Sdk="Microsoft.NET.Sdk.Web">
 
 <PropertyGroup>
 <TargetFramework>netcoreapp1.1</TargetFramework>
 </PropertyGroup>
 <PropertyGroup>
 <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
 </PropertyGroup>
 <ItemGroup>
 <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
 <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
 <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
 <PackageReference Include="Microsoft.AspNetCore.Session" Version="1.1.1" />
 <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
 <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
 <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
 </ItemGroup>
 <ItemGroup>
 <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
 </ItemGroup>
</Project>

這里能夠直觀的在ItemGroup節(jié)點看到我們添加進來的Session的引用和項目模板自帶的Logging等的引用,已經(jīng)父節(jié)點 Project Sdk="Microsoft.NET.Sdk.Web" ,我們要生成跨平臺運行包,就需要操作這個項目文件的配置信息,這里只需要添加如下代碼:

?
1
2
3
<PropertyGroup>
<RuntimeIdentifiers>win7-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>

然后再通過發(fā)布命令就能夠生成夸平臺包了,是不是挺簡單的,所以上面弄了一個Session小節(jié)做干貨呢呵呵;咋們來測試下吧,首先在項目根目錄這樣以此執(zhí)行命令:dontnet restore

Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

再執(zhí)行你簡短的發(fā)布命令(這里我直接采用默認參數(shù)的方式執(zhí)行,發(fā)布包會生成再bin下面):dotnet publish

Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

這個時候我們能夠在目錄:bin\Debug\netcoreapp1.1下面看到publish文件夾,里面就是咋們程序執(zhí)行文件了,為了測試下效果,這里我通過命令:dontnet WebApp01.dll (由于我這里安裝了sdk所以可以直接這樣命令運行)來運行我的測試用例項目:

Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

到這里一個windows上運行的包就完成了,有朋友就開始疑惑那跨平臺呢,還有您之前配置的 <RuntimeIdentifiers>win7-x64;ubuntu.16.04-x64</RuntimeIdentifiers> 有什么效果呢,那這里就開始演示怎么生成ubunt.16.04-x64的運行包了(win7-x64的也同樣方式);我們同樣需要經(jīng)過:dontnet restore 之后發(fā)布命令的時候這樣寫:

dotnet publish -f netcoreapp1.1 --runtime ubuntu.16.04-x64

命令說明:

-f:framework的縮寫;

netcoreapp1.1:是存放的文件夾;

--runtime:運行命令必須要的;

ubuntu.16.04-x64:存儲的文件夾名稱

Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺包

最后的結(jié)果是在目錄:Debug\netcoreapp1.1 下面生成了一個ubuntu.16.04-x64文件夾,里面就是咋們的運行程序包了;如果你想生成其他系統(tǒng)的運行包也是同樣的操作流程:

1. 在項目.csproj中添加對應的Runtime命令(如:win7-x64;osx.10-11-x64;ubuntu.16.04-x64);

2. 在dotnet publish的時候把最后一個參數(shù)改成對應的Runtime命令就行了(如:ubuntu.16.04-x64)

到此本文就結(jié)束了,希望能給您帶來好的幫助,謝謝閱讀;

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲欧美另类图片 | av网站免费在线观看 | 91精品国产福利在线观看 | 黄色一级免费大片 | 久久网页| 色九九| 午夜社区 | 嫩呦国产一区二区三区av | 亚洲成人一区二区三区 | 青青草原综合久久大伊人精品 | 亚洲激情在线播放 | 91伊人| 国产视频久久 | 婷婷激情五月 | 亚洲一区av在线 | 亚洲精品在线视频观看 | 国产一区二区三区免费看 | 日韩精品专区 | 中文字幕在线综合 | 欧美一性一交 | 日韩www| 欧美日韩成人 | 成人在线观看免费 | 国产羞羞视频免费在线观看 | 日韩视频区| 精品一区二区久久久久黄大片 | 狠狠色噜噜狠狠狠8888米奇 | 日韩码有限公司在线观看 | 91精品国产欧美一区二区 | 精品久久免费 | 国产麻豆一区二区三区 | 在线免费色视频 | www.91看片| 国产精品久久久久久亚洲调教 | 日韩和欧美的一区二区 | 一区二区蜜桃 | 欧美日韩国产在线播放 | 日日干狠狠干 | 亚洲精品久久久久久下一站 | 天天操狠狠操 | 日韩在线二区 |