【问题标题】:How can I call my Function App API from another system?如何从另一个系统调用我的 Function App API?
【发布时间】:2019-01-01 19:54:06
【问题描述】:

我使用 Visual Studio 2017 创建了一个函数应用程序,并创建了一些 API。该 API 在我的系统上运行得非常好。但是从另一个系统它得到“错误的请求/站点无法访问”。

我的问题是,如何从另一个系统调用我的 API?任何人请给我解决方案。

【问题讨论】:

  • 192.168.1.17 是您 PC 的 IP 地址(本地)?你在本地运行它?
  • 是的,这是我的系统 IP,但它在我的系统中也不起作用。我在 IP 地址上使用“localhost”。那是我的问题,我无法使用 IP 访问我的 API。
  • 看到这个 - stackoverflow.com/a/49541736/4148708func host 并不是真的要在生产中按原样使用,应该由像 nginx 这样的重型反向代理包装。
  • Kestrel 有什么问题需要在上面安装 nginx? 你可能会问。公平的问题。裸红隼可能没什么问题,我打开了一个问题以从构建运行时的人们那里得到答案 - github.com/Azure/azure-functions-host/issues/3184
  • 你有没有在你的服务中绑定127.0.0.1 ip,这样你的azure函数就不能被localhost以外的其他ip访问了。

标签: c# api azure azure-functions azure-functions-runtime


【解决方案1】:

如果您创建了 v2 函数,请在本地调试时检查您的函数 CLI 输出。第三行应该有Now listening on: http://0.0.0.0:7071

如果你看到Now listening on: http://localhost:7071,这意味着你的函数 CLI 是旧的,所以它仍然绑定到 localhost,这会阻止你使用本地 IP 访问函数。

显然解决方案是使用最新的 CLI。在 VS 菜单,Tools->Extensions and Updates,找到Azure Functions and Web Jobs Tools,将其更新到最新版本(15.0.40617.0)。然后应该可以使用新的 CLI。

请注意,本地功能只能由同一局域网中的系统访问,否则您应该公开该功能,请查看ngrok。如果你使用 v1 函数,它最新的 CLI 仍然绑定到 localhost,如果需要,必须求助于 ngrok 之类的工具。

【讨论】:

    【解决方案2】:

    在 VS 调试站点,默认使用 IIS Express 和 localhost + 端口。

    为了使用IP地址和多域调试,我们可以在C:\Users\...\Documents\IISExpress\config\applicationhost.config下找到applicationhost.config,找到如下代码:

    <bindings>标签中添加类似的一行:

     <binding protocol="http" bindingInformation="*:7071:192.168.1.17" />
    

    然后以管理员身份打开CMD命令窗口:

    netsh http add urlacl url=http://192.168.1.17:7071/ user=everyone
    

    终于可以用IP地址访问这个网站了

    更多信息供您参考:IIS Express enable external request

    【讨论】:

    • 是的,我收到“注册成功”的消息,但我仍然无法使用 IP 地址访问 API……我可以重新启动系统吗?
    • @IsmayilS 是的,尝试重新启动系统
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多