将 Microsoft Azure Function App 2.0 预览版绑定到 0.0.0.0

Posted

技术标签:

【中文标题】将 Microsoft Azure Function App 2.0 预览版绑定到 0.0.0.0【英文标题】:Bind Microsoft Azure Function App 2.0 preview to 0.0.0.0 【发布时间】:2018-09-07 10:05:46 【问题描述】:

我有一个用 C# 编写的 Microsoft Azure Function App 2.0 预览版,它绑定到 http://localhost:7071。

如何让它绑定到 0.0.0.0 而不是 localhost,以便我可以从本地网络上的另一台机器访问它?

看着这些Microsoft Docs我可以看到如何在local.settings.json文件中指定端口 "Host": "LocalHttpPort": 7071, "CORS": "*"

但不是使用哪个网络接口。

来自 Rails 背景,我会这样做:rails s -b 0.0.0.0

如何在 .net / Azure Function 世界中执行此操作?

【问题讨论】:

您应该可以通过 IP 地址从另一台机器访问它 - ***.com/questions/19482164/… 谢谢,我试过了。甚至尝试使用 IP 地址从本地计算机访问它,但它不起作用。我也关闭了 Windows 防火墙。 总有ngrok 如果有人在0.0.0.0:7071 之后没有工作,请使用localhost:7071 【参考方案1】:

更新——

你不再需要这个魔法了,因为函数主机现在默认监听0.0.0.0:7071

$ func -v
2.0.1-beta.33

$ func | grep Runtime
Function Runtime Version: 2.0.11933.0

$ func host start | grep -i listen
Listening on: http://0.0.0.0:7071

现已弃用 —

如果您使用的是 Windows,

C:\>netsh interface portproxy add v4tov4 listenport=8081 ^
        listenaddress=0.0.0.0 connectport=7071 connectaddress=127.0.0.1


C:\>netsh interface portproxy show all

Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         8081        127.0.0.1       7071


C:\>netstat -an  | findstr 8081
  TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING

C:\>netstat -an  | findstr 7071
  TCP    127.0.0.1:7071         0.0.0.0:0              LISTENING

测试一下:

C:\>curl.exe http://192.168.111.4:8081/api/HttpTrigger -i
HTTP/1.1 200 OK
Date: Wed, 28 Mar 2018 18:25:31 GMT
Content-Type: application/json; charset=utf-8
Server: Kestrel
Transfer-Encoding: chunked

"Oh hai."

摆脱端口代理:

C:\>netsh interface portproxy delete v4tov4 listenport=8081 listenaddress=0.0.0.0

在 Linux 上,iptables 是你的出路,在 Mac 上……我不知道,nginx 你的出路?好的,似乎有一个pfctl 工具,可能是从 BSD 继承的?

虽然Kestrel是服务器,但是设置环境变量ASPNETCORE_URLS="http://*:7071"是没有效果的。功能主机可能在代码中使用localhost 引导,这可能暗示您不应该裸露它,您应该反向代理到它。

【讨论】:

以上是关于将 Microsoft Azure Function App 2.0 预览版绑定到 0.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft.Azure.WebJobs.Script:无法将“System.String”类型的对象转换为“Microsoft.AspNetCore.Http.HttpRequest”类型。回

Microsoft Azure系列之二 Microsoft Azure概述

如何将python web应用程序部署到Microsoft Azure

Azure.Cosmos 还是 Microsoft.Azure.Cosmos、Azure.Storage.Blob 还是 Microsoft.Azure.Storage.Blob?适用于 .NET C

将 Azure 托管的机器人添加到 Microsoft Teams 开发门户

在 Azure 上的资源组之间移动后删除 microsoft.web/certificates