在 Windows 10 IoT Core 上运行 ASP.NET Core 应用程序一直存在问题,因为它还不是官方支持的场景,而且许多组件我们习惯于不考虑 Windows 10 ARM。不过,使用 ASP.NET Core 2 在 Windows 10 IoT Core 上运行 Web 应用程序也很容易。开发人员在为 Windows 10 IoT Core 构建 Web 应用程序时应该了解很少的技巧。
在与真实的东西弄脏我们的手之前,要提到一些事情:
考虑到这些警告,让我们从安全的水域开始,在 Windows 10 IoT Core 上运行默认的 ASP.NET Core 2 Web 应用程序。
我用 Visual Studio 创建了一个默认的 ASP.NET Core 2 Web 应用程序,并使编译器构建了一个可以直接运行的 EXE 文件。只要打开项目文件,并添加这个输出类型设置:
<propertygroup>
<targetframework>netcoreapp2.0</targetframework>
<outputtype>Exe</outputtype>
</propertygroup>
现在我们可以构建一个 Web 应用程序,来发现 EXE 文件不存在。发布应用程序时我们会得到它。
在构建和部署我们的 Web 应用程序到我们的电路板之前,我们必须在所有接口上监听端口 5000。 为此,我们修改程序类并使用 *
作为主机名。
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
} public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://*:5000")
.UseStartup<startup>()
.Build();
}
要将我们的应用程序部署到 Windows 10 IoT Core,我们需要发布它并告诉我们要在 ARM 上支持 Windows 10 的 dotnet 实用程序。以下命令可以完成相应的功能:
dotnet publish -r win-arm
如果一切顺利,那么发布的文件位于文件夹 bin\Debug\netcoreapp2.0\win-arm\publish
。
在这里,发布文件夹的大小是 73MB。
要为我们的 Web 应用程序进行简单的测试,我们需要将其部署到 Windows 10 IoT Core。以下是要遵循的步骤:
1.打开具有管理权限的 PowerShell 并运行以下命令:
Enter-PSSession -ComputerName minwinpc -Credential minwinpc\Administrator
2.为该 Web 应用程序创建一个文件夹并移至该文件夹:
mkdir webapptest
cd webapptest
3.打开 Windows 资源管理器并移动到您的开发板的磁盘上:
\\minwinpc\c$
询问时输入密码,然后移至 webapp 测试文件夹。
4.从 Web 应用程序 publish 文件夹获取文件,并将其复制到之前创建的 webapptest 文件夹中。
5.在 PowerShell 中运行以下命令打开板的端口 5000:
netsh advfirewall firewall add rule name=”ASP.NET Core Web Server port”
dir=in action=allow protocol=TCP localport=5000
6.接下来,在 PowerShell 中,使用 EXE 文件运行Web应用程序:.\WebApplication6.exe
。
如果在我们的 Web 应用程序中没有问题的依赖关系,那么我们可以看到一些输出到 PowerShell 窗口。
请注意,ASP.NET Core 正在所有网络接口上监听端口 5000。现在使用浏览器打开应用程序。
在 PowerShell 中,除了例外(如果有),我们没有看到任何调试输出。
注意:对 Web 应用程序的第一个请求是非常缓慢的,但在此之后,应用程序运行速度快,不会给板子带来太多的负担。大多数请求不消耗太多的 CPU,并且工作集的内存大约是 104MB
。
以前,在 Windows 10 IoT Core 上运行 ASP.NET Core 应用程序比较困难,但使用 ASP.NET Core 2,我们可以用更少的努力和黑客来实现。我们只需要在 Windows 10 IoT Core 上运行一个默认的 Web 应用程序就可以将其构建为可执行文件,然后将其发布到开发板上。
这仍然是一件很冒险的事情,因为许多在常规设备上运行而没有任何问题的东西都不是在 ARM 上用 Windows 构建的,在运行应用程序时通常会出现这些组件的问题。尽管如此,我们可以在 Windows 10 IoT Core 上使用 ASP.NET Core,并且需要在板上安装简单的 Web 服务器的解决方案。
观光\评论区