【问题标题】:Using HTTPListener with Azure Web apps将 HTTPListener 与 Azure Web 应用程序一起使用
【发布时间】:2021-11-16 21:17:43
【问题描述】:

我正在尝试让一个简单的 HTTP 控制台应用程序作为 Azure 服务应用程序运行。它所做的只是在您连接时返回 OK。它在我的笔记本电脑上运行良好,我可以使用 VS2019 发布到 Azure ok。问题在于用于监听的前缀。

在我的笔记本电脑上我可以使用 http://+:80/;https://+:443/,但在 Azure 中我收到错误:[EXCEPTION] Access is denied.

这篇文章https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening 暗示应用程序将监听 80 和 443 “通过 Internet 访问应用程序的唯一方法是通过已经公开的 HTTP (80) 和 HTTPS (443) TCP 端口;应用程序可能不会在其他端口上侦听来自 Internet 的数据包。 但是,应用程序可能会创建一个套接字,该套接字可以侦听沙箱内的连接。例如,同一应用程序中的两个进程可能通过 TCP 套接字相互通信;从沙盒外部传入的连接尝试,即使它们在同一台机器上,也会失败。有关更多详细信息,请参阅下一个主题。”

但是当我尝试注册前缀时,我的代码总是失败。我不能使用 localhost,因为同一篇文章说这是不允许的。我已经尝试使用应用程序 URL,但这也不起作用。

我看过其他文章暗示 HTTPListener 需要管理员权限,而我无法在 Azure 中授予它。

有谁知道正确的前缀是什么或者它是否会起作用?

【问题讨论】:

  • 我的猜测是它与已经在监听这些端口的 Azure Web App 应用程序服务器(大部分时间是 IIS)冲突
  • 可能,但文章确实暗示应用程序也可以侦听这些端口。

标签: azure .net-core system.net.httpwebrequest


【解决方案1】:

Netstat 在 KUDU 中不工作,所以 ASE (App Service Environment) 用于查看门户中的端口详细信息 App Service Environment -> General -> IP地址(检查here)。

应用服务应用程序仅提供 HTTP (port 80) 和 HTTPS (port 443) 流量。每个应用服务应用程序都具有对 azurewebsites.net 域名的默认内置 HTTPS 支持。

您的应用可能已经在监听端口 80 和 443。请在此处查看更多信息以了解类似问题see here

【讨论】:

  • 科技社区问题和我一样,没有任何解决方案。如何在应用程序中侦听 HTTPS 流量而不使用内置的 HTTPS 支持?这是导致访问被拒绝错误的前缀,那么正确的使用是什么?
  • port-mapping可用于容器。不适用于标准应用服务,它仍然具有相同的 80/443 限制。如果你想使用它,你可以使用云服务检查here & 参考here
  • 端口 80/443 是我想要使用的,我只是无法启动 HTTP 侦听器。
  • 如果你想使用 HTTP 使用端口 80,HTTPS 使用端口 443。但是在使用 ASE 之前检查端口是否正在使用其他进程。
猜你喜欢
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2021-05-14
  • 2013-08-06
  • 2013-08-31
  • 1970-01-01
相关资源
最近更新 更多