在離線環境中釋出.NET Core至Windows Server 2008

durow發表於2016-08-12

在離線環境中釋出.NET Core至Windows Server 2008

 

0x00 寫在開始

之前一篇部落格中寫了在離線環境中使用.NET Core,之後一邊學習一邊寫了一些頁面作為測試,現在打算髮布一下試試。看了下官方給出的釋出教程感覺挺詳細的了(https://docs.asp.net/en/latest/publishing/iis.html),不過畢竟離線環境還是挺麻煩的,直覺告訴我釋出過程中會遇到么蛾子。果然就遇到問題了,不過解決起來都很簡單。這裡做個記錄順便分享下,希望對有類似需求的同學有所幫助。

0x01 遇到的問題和解決方法

看了官方釋出教程,首先去https://www.microsoft.com/net/download下載服務端安裝包,下載後複製到離線網路伺服器上安裝。結果遇到了問題1:

問題1:安裝程式可以開啟,但安裝過程中提示未知錯誤,安裝失敗。(可惜離線網路也沒法截圖)

解決過程:看了下日誌應該是安裝某個元件過程中返回了錯誤而失敗。我之前曾經過單獨安裝.NET Core SDK,也是失敗,檢視日誌是缺少Microsoft Visual C++ 2015 Redistributable,裝上就可以了。服務程式安裝包也會安裝.NET Core SDK,應該也是需要Microsoft Visual C++ 2015 Redistributable,於是從VS2015安裝映象裡找出了64位安裝包(下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=48145),結果安裝時又遇到了問題2:

問題2:安裝Microsoft Visual C++ 2015 Redistributable時提示安裝包無法驗證。

解決過程:這個問題在之前離線安裝VS2015時就遇到過了,解決起來輕車熟路,把缺少的兩個證書匯入就OK了。詳細可以看在離線環境中使用.NET Core

匯入證書後順利解決了問題2,安裝好Microsoft Visual C++ 2015 Redistributable後問題1也解決了,服務程式安裝成功。一邊感嘆自己的聰明一邊開啟命令列測試了下dotnet,結果出現了問題3:

問題3:命令列執行dotnet命令後提示:

Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057

解決過程:這時候只要一邊心中默唸遇到問題的肯定不會只有我自己,一邊開啟搜尋引擎就可以了。順便安利一下bing,特別是切換到英文bing,搜問題還是很好的。果然發現之前已經有人在github上提過這個issue了(https://github.com/dotnet/cli/issues/3907)。解決方式就是安裝補丁KB2533623(下載地址:https://support.microsoft.com/en-us/kb/2533623)。關於系統依賴更詳細的說明可以參照這篇文章:https://github.com/dotnet/core/blob/master/Documentation/prereqs.md。安裝補丁重啟後dotnet命令就正常了。

最後就是記得要執行iisreset,一定要記得(因為我忘了,折騰了半天才想起來)。

0x02 正確的順序

以下順序只在Windows Server 2008 R2 64上實際測試過:

1、匯入證書。

2、安裝Microsoft Visual C++ 2015 Redistributable。

3、安裝KB2533623補丁。

4、安裝DotNetCore.1.0.0-WindowsHosting.exe。

5、命令列執行iisreset重啟IIS。

關於如何配置IIS和部署應用,官方教程說的都很詳細了。值得一提的是等問題解決了後才發現官方教程最後居然有專門的Common errors:https://docs.asp.net/en/latest/publishing/iis.html#common-errors。看一下也挺有收穫的。

0x03 寫在最後

目前我們主要用.NET Core做一些測試,同時邊測試邊學習,提前踩坑,用到的時候能快速上手。並沒有用來做新功能或試圖代替原有功能。不過就目前來看效果還是不錯的,開發過程體驗也很好,真心看好.NET Core。

 


更多內容歡迎訪問我的部落格:http://www.durow.vip

相關文章