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

Chr*_*ung 3 c# azure

我有一个用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功能世界中执行此操作?

evi*_*obu 5

更新 -

你不再需要这种巫术了,因为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
Run Code Online (Sandbox Code Playgroud)

现在已弃用 -

如果你在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
Run Code Online (Sandbox Code Playgroud)

测试一下:

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."
Run Code Online (Sandbox Code Playgroud)

摆脱portproxy:

C:\>netsh interface portproxy delete v4tov4 listenport=8081 listenaddress=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

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

虽然Kestrel是服务器,但设置环境变量ASPNETCORE_URLS="http://*:7071"无效.函数主机可能是localhost在代码中引导的,这可能暗示你不应该裸露它并且你应该将代理转换为它.