【发布时间】:2019-10-20 03:01:42
【问题描述】:
我有一个作为 Docker 容器运行的现有 ASP.NET Core Web 应用程序,并希望将其作为在 Azure IoT Edge 上运行的边缘模块提供。 从文档中我知道我可以运行 Azure Functions、流分析和自定义模块(据我了解,它们只是与 Azure IoT Edge 运行时集成的控制台应用程序)。
将我的 ASP.NET Core Web 应用程序转变为 Edge 模块并与 Edge Hub 交互的最佳方式是什么?
最好的方法是使用自定义模块作为模板,移动我的 ASP.NET Core 项目以适应文件结构并编辑 dockerfile 以运行我的主 ASP.NET Core 程序集吗?
感谢您的建议!
更新: 我正在遵循上述方法。我创建了一个自定义边缘模块,并尝试使用以下步骤将其转换为最简单的 ASP.NET Core Web 应用程序:
- 添加包引用
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" /> -
添加启动类
公共类启动 {
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.Run(async r => await r.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("seas"))); loggerFactory.AddConsole(); } } -
将此方法添加到 Program.cs:
公共静态 IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup();
将 Main 的内容替换为
CreateWebHostBuilder(args).Build().Run();
我可以将容器作为 Azure IoT Edge 的一部分启动,但容器会不断重启,所以我认为我的方法并不正确。不幸的是,我也无法访问容器的控制台,因为它每隔几秒钟就会重新启动......
sudo docker ps 的输出 ...
4b23cdad5bc5 localhost:5000/simpleweb:0.0.1-amd64
"dotnet SimpleWeb.dll" 5 minutes ago Restarting (150) 58 seconds ago
...
PS:我正在使用 iot edge dev 容器进行测试,遵循此快速入门: https://github.com/Azure/iotedgedev/wiki/quickstart-with-iot-edge-dev-container
【问题讨论】:
-
您想要/需要您的 Web 应用程序与 Edge Hub 通信,还是只想在您的 Edge 设备上按原样运行该应用程序?
-
我还需要接收消息并将消息推送到边缘集线器
标签: asp.net-core azure-iot-edge