Win 10 Core 教程:在 Windows 10 IoT Core 上运行 ASP.NET Core 2 应用程序

在 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 尚未正式受支持。
  • 在 ARM 上只有 .NET Core 运行时可用于 Windows 10,但没有 SDK(是的,没有 dotnet restore 和 dotnet build 等)。
  • 并不是所有在你的开发箱上工作的东西,都可以在 Windows 10 IoT Core上运行,而当试图在一个电路板上运行 Web 应用程序时,这些东西就会出现。

考虑到这些警告,让我们从安全的水域开始,在 Windows 10 IoT Core 上运行默认的 ASP.NET Core 2 Web 应用程序。

构建 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

ASP.NET Core 在 ARM 上发布

在这里,发布文件夹的大小是 73MB。

将 Web App 部署到 Windows 10 IoT Core

要为我们的 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 Windows 10 IoT Powershell

请注意,ASP.NET Core 正在所有网络接口上监听端口 5000。现在使用浏览器打开应用程序。

ASP.NET Core 应用程序

在 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 服务器的解决方案。

英语原文链接:Running ASP.NET Core 2 Apps on Windows 10 IoT Core

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.