【问题标题】:Azure Functions Proxy 404 on localhost本地主机上的 Azure Functions 代理 404
【发布时间】:2020-05-30 18:36:29
【问题描述】:

我有一个 Azure 函数应用程序,其中包含 URL http://localhost:7072/api/create-room 处的函数以及其他函数。这个特殊的函数是一个允许匿名访问的HTTPTrigger,并接受GET动词:

[HttpTrigger(AuthorizationLevel.Anonymous, "get")]

除此之外,我还有一个单独的函数应用程序,它只托管一个 proxies.json 文件并仅用作函数代理。我的代理功能在本地端口7071 上运行。

我的代理文件目前如下所示:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
      "chatNegotiate": {
        "matchCondition": {
          "route": "/api/chat/negotiate",
          "methods": [
            "POST"
          ]
        },
        "backendUri": "%chat_api%/api/BeginNegotiate"
      },
      "chatMessages": {
        "matchCondition": {
          "route": "/api/chat/messages",
          "methods": [
            "POST"
          ]
        },
        "backendUri": "%chat_api%/api/PostMessage"
      },
      "createRoom": {
        "matchCondition": {
          "route": "/api/create-room",
          "methods": [
            "GET"
          ]
        },
        "backendUri": "%session_api%/api/CreateRoom"
      }
    }
}

当这两个功能应用都部署到 Azure 时,一切都像做梦一样。我可以提出请求,它们被转发,请求回来。一切都很美好。

但是,当我在本地运行这些函数时,请求永远不会从代理转发,代理返回 404。我可以直接在 7072 上本地运行的另一个函数应用上点击该函数,一切都很好那里,但当我通过代理到达时根本没有。

代理本身返回:

[30/05/2020 18:24:30] Host lock lease acquired by instance ID '0000000000000000000000002D5B6BEA'.
[30/05/2020 18:24:34] Executing HTTP request: {
[30/05/2020 18:24:34]   "requestId": "9004b8e2-f208-4a98-8b48-6f85bca41281",
[30/05/2020 18:24:34]   "method": "GET",
[30/05/2020 18:24:34]   "uri": "/api/create-room"
[30/05/2020 18:24:34] }
[30/05/2020 18:24:34] Executed HTTP request: {
[30/05/2020 18:24:34]   "requestId": "9004b8e2-f208-4a98-8b48-6f85bca41281",
[30/05/2020 18:24:34]   "method": "GET",
[30/05/2020 18:24:34]   "uri": "/api/create-room",
[30/05/2020 18:24:34]   "identities": [],
[30/05/2020 18:24:34]   "status": 404,
[30/05/2020 18:24:34]   "duration": 15
[30/05/2020 18:24:34] }

从我看过的例子来看,例如https://chsakell.com/2019/02/03/azure-functions-proxies-in-action/,这应该可以正常工作。

有什么建议吗?提前感谢您提供的任何帮助!

【问题讨论】:

  • 你在本地更新了local.settings.json了吗?
  • 如果您收到 404,则表示您调用了错误的 URL。确保在 local.settings.json 中拥有生产环境中的所有变量。您还可以尝试在代理上硬编码 localhost:7072 以进行调试
  • 我的 local.settings.json 是最新的并且适用于代理。我也尝试过硬编码,结果相同。

标签: azure proxy localhost azure-functions


【解决方案1】:

毕竟我已经解决了。

proxies.json 默认未设置为复制到输出目录。

您需要确保将其设置为始终复制

在 Visual Studio 中:

右击proxies.json > 点击属性 > 将复制到输出目录设置为始终复制

在 Visual Studio Code(和其他编辑器)中: 打开ProjectName.csproj 并添加一个条目以始终将proxies.json 复制到输出目录。

<ItemGroup>
  <None Update="proxies.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>
</ItemGroup>

【讨论】:

  • 我也有同样的问题,非常烦人。但是不要得到这个解决方案,这是编辑器中的东西吗?我使用 VSCode 并没有获得该选项。
  • 遇到完全相同的问题,但遗憾的是您的解决方案对我不起作用。
【解决方案2】:

这解决了我的本地函数应用代理实例上的 404 问题。在 local.settings.json 中将其添加到 Values:

“AZURE_FUNCTION_PROXY_DISABLE_LOCAL_CALL”:是的,

信用:https://chsakell.com/2019/02/03/azure-functions-proxies-in-action/

【讨论】:

  • 不适合我。
猜你喜欢
  • 2017-07-11
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多