张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

时间:2022-01-30 04:46:24

今天是大年初二,都去走亲戚了吧,享受一下这难得的能和亲友相聚的时光。而我就不一样了,今天一回到家就又开始瞎折腾了,哈哈哈。

问题配景

比来花了点时间用 ASP.NET Core 2 写了个小我私家博客,中间出了好多问题,过程弯弯曲曲的,但好歹最后还是完成部署在阿里云上了。这几天闲的没事看 .NET Core CLI,发明运行时标识符(Runtime IDentifier)居然有 win10-arm,这使我俄然萌生了想把我的博客部署在 Raspberry Pi 上。(这就是纯属瞎折腾,部署在 Windows IoT 上确实没用,横竖玩都玩了,爽性写篇博客吧...)

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

颁布(Publish)应用

在将应用部署在 Windows IoT 上之前,首先是要以某种合适的要领将应用颁布到本机。(Windows 10 IoT 只包罗运行时)

1. 变动项目输出类型

打开项目“属性”,将“应用措施”选项中的“输出类型”,改为“控制台应用措施”。

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

或者你也可以直接编纂 .csproj 文件,将 的值改为 Exe。

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

2. 编纂 Program.cs

和在 Linux 上部署一样, 在 BuildWebHost 里加上这么一句话 .UseUrls("*:5000")。* 作为主机名,5000 为监听端口。

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

3. 在控制台颁布

在“工具”的“Nuget 承打点器”中,打开“措施承打点器控制台”。运行以下命令:

dotnet publish -c release -r win10-arm

因为是要部署在 Raspberry Pi 上, RID 用的 win10-arm。颁布的路径是在 “你的项目\bin\Release\netcoreapp2.0\win10-arm\publish”。

部署应用

部署要遵顼以下法式

1. 将颁布文件复制到 Raspberry Pi

怎么去复制文件随便,这里我用的是 WinSCP ,因为我本身打点 Linux 的时候就用的这个,习惯了。但在复制之前,要先启用 Windows IoT 的 FTP 打点。需要在 PowerShell 或者 Device Portal 运行命令:

start C:\Windows\System32\ftpd.exe

接下来就是运行你的 FTP 打点工具,新建一个文件夹,,然后把文件复制进去即可。

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

2. 配置防火墙

使用 netsh 工具配置防火墙,运行命令:(一开始被这个问题困扰了半天,怎么都访谒不到网站,做一个允悲的心情...)

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

切换到相应的目录,运行 .exe 即可。

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

问题

嗯,我的博客没有在 Raspberry Pi 上跑起来(但上面的对象都是对的),来看看异常 Unable to load DLL ‘sni.dll‘

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

这个问题凡是引用一下 Nuget 包 System.Data.SqlClient 就好了,但在 Raspberry Pi 上没好... 我开始了在 GitHub 上翻 issue 的旅程,揪心的工作还是产生了,人家压根就没撑持 arm32 ... 也就是说,不算定制镜像的话,只有 Raspberry Pi 是不撑持的,Dragonboard 410c 是 arm64, MinnowBoard 是 x64 (允悲)... 让我们等候 Raspberry Pi 4 吧!

我又新建了一个默认的项目,部署在了 Raspberry Pi 上,这下没问题了...

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用

但这一切并不能阻止我把博客部署在 Windows IoT 上,上虚拟机,终于告成了(摊手)...

张开心的 Windows 10 IoT 开发条记:部署 ASP.NET Core 2 应用