gpt4 book ai didi

.net - 在 Azure 应用服务应用程序中向本地主机发出请求

转载 作者:行者123 更新时间:2023-12-03 01:35:07 32 4
gpt4 key购买 nike

我有一个连续的网络作业,用于监听包含诊断信息的请求。

为了测试连接,我尝试在网络作业中进行运行状况检查,但无法根据 Azure 应用服务文档向本地主机发出请求。

下面的代码是我用来验证我是否可以从部署的应用程序进行连接的代码:

    var uri = new Uri("http://localhost:8989/ping");
var response = await client.GetAsync(uri);

我得到这个异常:

System.Net.Http.HttpRequestException: An error occurred while sending the request. 
---> System.Net.WebException: Unable to connect to the remote server
---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:8989

Web 作业是通过 Kudu (SCM) 通过站点扩展安装脚本安装的,这意味着 Web 作业最终是 Kudu (SCM) 的子进程。启动时的 Web 作业应用程序将自身绑定(bind)到端口 8989。在 Windows 上本地启动该应用程序,我能够毫无问题地进行运行状况检查。

Azure 应用程序服务文档表示,除非同一沙箱中的应用程序绑定(bind)到端口 ( https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#local-address-requests ),否则对本地主机的请求将会失败。

Azure 应用服务文档指出 Kudu 与主应用程序 ( https://github.com/projectkudu/kudu/wiki/Kudu-architecture#security-model ) 在同一沙箱中运行。

如何通过 http 与我的网络作业进行通信?

最好是我可以通过站点扩展安装过程来执行此操作,但任何选项都很好。

2019 年 12 月 26 日更新:

我尝试使用 WEBSITE_DISABLE_SCM_SEPARATION=true ( https://github.com/projectkudu/kudu/wiki/Configurable-settings#use-the-same-process-for-the-user-site-and-the-scm-site ) 强制 SCM 和主应用程序在同一个沙箱中运行。

文档指出它们已经在同一个沙箱中运行,并且如果进程监听同一沙箱中的端口,那么这些请求应该有效。值得注意的是,实际的 SCM w3wp.exe 进程已经能够通过 http 访问 localhost 来执行我的 Web 作业。但这个设置似乎并没有改善情况。

2020 年 4 月 2 日更新:

我正式放弃了使用 Web 作业的想法,现在我作为主应用程序实例的子进程启动该进程。这使我可以毫无问题地与 localhost:8989 进行通信。

尽管我现在需要管理自己的保持事件逻辑。

我仍然很想知道是否有一种方法可以通过 TCP 与 Web 作业进行通信(如果可能的话)。

最佳答案

How do I enable communication with my web job via http?

没有。 WebJob 不可能通过本地主机直接向站点发送请求。此限制记录在 sandbox 上像您提供的页面。

Connection attempts to local addresses (e.g. localhost, 127.0.0.1) and the machine's own IP will fail, except if another process in the same sandbox has created a listening socket on the destination port.

Rejected connection attempts, such as the following example which attempts to connect to 127.0.0.1:80, from .NET will result in the above exception.

更多详情可以引用这个SO thread .

关于.net - 在 Azure 应用服务应用程序中向本地主机发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59471540/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com