1

我正在使用 Azure 函数和 signalR 创建实时聊天。它在本地工作得很好,但部署的“协商”功能不起作用。

协商函数(index.js)

module.exports = function (context, req, connectionInfo) {
    context.res = { body: connectionInfo };
    context.done();
}

配置文件(function.json)

{
    "disabled": false,
    "bindings": [
      {
        "authLevel": "anonymous",
        "type": "httpTrigger",
        "direction": "in",
        "name": "req"
      },
      {
        "type": "http",
        "direction": "out",
        "name": "res"
      },
      {
        "type": "signalRConnectionInfo",
        "name": "connectionInfo",
        "hubName": "chat",
        "direction": "in",
        "connectionStringSetting": "AzureSignalRConnectionString"
      }
    ]
  }

AzureSignalRConnectionString 在函数应用属性中设置。我还尝试使用“connectionString”而不是“connectionStringSetting”并使用连接字符串而不是“AzureSignalRConnectionString”引用,以及我们在这里拥有的所有 4 种可能的组合。

如果我在 Azure 门户中运行该函数,我会收到以下错误:

[错误] 执行“Functions.negotiate”(失败,Id=0ac24b1f-1ab0-40f5-9680-34db547e1cc9)
无法解析属性“SignalRConnectionInfoAttribute.ConnectionStringSetting”的值。确保设置存在并且具有有效值

4

2 回答 2

0

您是否在代码中将“connectionStringSetting”写为属性名称?如果是这样,请您尝试将其更改为“ConnectionStringSetting”。您可以参考本教程或我在下面发布的屏幕截图:

在此处输入图像描述

于 2019-11-04T06:07:55.247 回答
0

已解决(在https://social.msdn.microsoft.com/上得到了答案)。我应该在 FunctionApp/Configuration/Application 设置中添加 AzureSignalRConnectionString 而不是 FunctionApp/Configuration/Application 设置/连接字符串。

于 2019-11-29T14:49:39.400 回答