張高興的 Windows 10 IoT 開發筆記:部署 ASP.NET Core 2 應用

今天是大年初二,都去走親戚了吧,享受一下這可貴的能和親友相聚的時光。而我就不同了,今天一回到家就又開始瞎折騰了,哈哈哈。app

問題背景

最近花了點時間用 ASP.NET Core 2 寫了個我的博客,中間出了好多問題,過程彎彎曲曲的,但好歹最後仍是完成部署在阿里雲上了。這幾天閒的沒事看 .NET Core CLI,發現運行時標識符(Runtime IDentifier)竟然有 win10-arm,這使我忽然萌生了想把個人博客部署在 Raspberry Pi 上。(這就是純屬瞎折騰,部署在 Windows IoT 上確實沒用,反正玩都玩了,乾脆寫篇博客吧...)工具

發佈(Publish)應用

在將應用部署在 Windows IoT 上以前,首先是要以某種合適的方法將應用發佈到本機。(Windows 10 IoT 只包含運行時)網站

1. 更改項目輸出類型

打開項目「屬性」,將「應用程序」選項中的「輸出類型」,改成「控制檯應用程序」。ui

或者你也能夠直接編輯 .csproj 文件,將 的值改成 Exe。 阿里雲

2. 編輯 Program.cs

和在 Linux 上部署同樣, 在 BuildWebHost 里加上這麼一句話 .UseUrls("http://:5000")。 做爲主機名,5000 爲監聽端口。code

3. 在控制檯發佈

在「工具」的「Nuget 包管理器」中,打開「程序包管理器控制檯」。運行如下命令:blog

dotnet publish -c release -r win10-arm

由於是要部署在 Raspberry Pi 上, RID 用的 win10-arm。發佈的路徑是在 「你的項目\bin\Release\netcoreapp2.0\win10-arm\publish」。部署

部署應用

部署要遵頊如下步驟get

1. 將發佈文件複製到 Raspberry Pi

怎麼去複製文件隨便,這裏我用的是 WinSCP ,由於我本身管理 Linux 的時候就用的這個,習慣了。但在複製以前,要先啓用 Windows IoT 的 FTP 管理。須要在 PowerShell 或者 Device Portal 運行命令:raspberry-pi

start C:\Windows\System32\ftpd.exe

接下來就是運行你的 FTP 管理工具,新建一個文件夾,而後把文件複製進去便可。

2. 配置防火牆

使用 netsh 工具配置防火牆,運行命令:(一開始被這個問題困擾了半天,怎麼都訪問不到網站,作一個允悲的表情...)

netsh advfirewall firewall add rule name=」ASP.NET Core Web Server port」 dir=in action=allow protocol=TCP localport=5000

3. 運行

切換到相應的目錄,運行 .exe 便可。

問題

嗯,個人博客沒有在 Raspberry Pi 上跑起來(但上面的東西都是對的),來看看異常 Unable to load DLL 'sni.dll'

這個問題一般引用一下 Nuget 包 System.Data.SqlClient 就行了,但在 Raspberry Pi 上沒好... 我開始了在 GitHub 上翻 issue 的旅程,揪心的事情仍是發生了,人家壓根就沒支持 arm32 ... 也就是說,不算定製鏡像的話,只有 Raspberry Pi 是不支持的,Dragonboard 410c 是 arm64, MinnowBoard 是 x64 (允悲)... 讓咱們期待 Raspberry Pi 4 吧!

我又新建了一個默認的項目,部署在了 Raspberry Pi 上,這下沒問題了...

但這一切並不能阻止我把博客部署在 Windows IoT 上,上虛擬機,終於成功了(攤手)...

相關文章
相關標籤/搜索