我正在关注 Web 服务器的示例应用程序,通过带有端口的 TCP 处理传入请求。
带有代码的示例应用程序:https://incredibits.io/project/windows-10-iot-internet-of-things-tips/windows-10-iot-raspberry-pi-web-server
在我的 Windows 10 机器上调试 UWP 应用程序并尝试访问本地 IP(192.168.x.x <- 当然,我已经输入了我的实际本地 IP)时,我得到了我应该做的。应用程序获取传入请求并在我的另一台计算机上将一些数据返回给我(客户端)。
我面临的问题是,当我将其部署到运行 Windows 10 IoT 核心版(Insider 的最新版本)的 Raspberry Pi 3 时,我根本无法从我的客户端计算机访问该应用程序。这是 Pi 防火墙的问题还是其他原因阻止了这种情况?
我可以在端口 8080 上访问 IoT Core 的 Web 界面,但我无法访问在端口 80 上运行的应用程序。(我也尝试将端口切换到另一个端口,在我的 Windows 10 上本地工作,但在 Pi 上不工作)
有没有人知道解决方案,或者遇到过类似的问题?
注意: 我也试过像 ( https://ms-iot.github.io/content/en-US/win10/samples/BlinkyWebServer.htm ) 这样的例子,它再次在我的 Windows 10 电脑上运行,并且可以被我的另一台电脑访问,如果它们在同一网络上,但不在我的 Pi 上)
最佳答案
我找到了解决问题的方法。
我使用的端口没有在 Raspberry Pi 的防火墙中打开。我找不到如何向防火墙添加规则,但在 Freenode C# 聊天论坛上寻求帮助后,我找到了以下代码片段:
首先我通过 PowerShell 登录到 Pi
Enter-PsSession -ComputerName MyRaspberryPi-Credential MyRaspberryPi\Administrator
然后我手动添加我正在使用的端口的防火墙开放。在本例中为端口 8080。
netsh advfirewall firewall add rule name="Raspberry Pi Webserver" dir=in action=allow protocol=TCP localport=8080
在那之后,一切都按预期进行。我可以访问我的 Raspberry Pi 上的端口!一切顺利!
感谢评论中的@canton7 和@taylor-kidd,他们提出的建议最终帮助了我!
编辑 4 月 12 日: 似乎这个防火墙未打开的问题实际上是微软已知的问题。他们在 Insider Preview 版本 14295(我正在使用)的发布说明中写道 http://ms-iot.github.io/content/en-US/win10/ReleaseNotesInsiderPreview.htm
关于c# - UWP Raspberry Pi 网络服务器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502484/