在離線環境中發佈.NET Core至Windows Server 2008 0x00 寫在開始 之前一篇博客中寫了在離線環境中使用.NET Core,之後一邊學習一邊寫了一些頁面作為測試,現在打算發佈一下試試。看了下官方給出的發佈教程感覺挺詳細的了(https://docs.asp.net/en/l ...
在離線環境中發佈.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。