如何在 Visual Studio 的 Azure Functions 应用程序中调用和调试 SignalRTrigger 函数

use*_*921 6 c# signalr signalr-hub azure-functions azure-signalr

我正在按照本指南使用 SignalR 触发器绑定构建我的第一个 Azure Function App 。我已经在 Azure 中设置了 Function App 和 SignalR 服务。

但现在我需要调试我的 SignalR 触发函数之一。我尝试使用本地函数主机 (func.exe) 使用 Visual Studio 2022 来执行此操作,只需在我的 Azure Functions 项目中按 F5 即可。

我的 ServerlessHub 带有一个函数 JoinGroup,我想在 Visual Studio 中调用和调试该函数。

        namespace FunctionApp
        {
            public class SimpleChat : ServerlessHub
            {
                [FunctionName("negotiate")]
                public SignalRConnectionInfo Negotiate([HttpTrigger(AuthorizationLevel.Anonymous)]HttpRequest req)
                {
                    var claims = GetClaims(req.Headers["Authorization"]);
                    return Negotiate(
                        claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value,
                        claims
                    );
                }

                [FunctionName(nameof(JoinGroup))]
                public async Task JoinGroup([SignalRTrigger]InvocationContext invocationContext, string connectionId, string groupName)
                {
                    throw new ApplicationException("CODE REACHED");
                    await Groups.AddToGroupAsync(connectionId, groupName);
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我还用打字稿编写了一个简单的客户端,使用一个方法来调用我的 JoinGroup 函数:

            testjoinGroup(){
                if (this.isConnected()) {
                    this.hubConnection.invoke<any>("joinGroup", "testGroupName")
                        .then(x => console.log("success"))
                        .catch(err => console.log(err)):
                }
            }
Run Code Online (Sandbox Code Playgroud)

连接已成功创建,协商调用已通过,并且当我调用上述方法 testjoinGroup() 时,它会打印“成功”。但是,我没有在 Visual Studio 中达到断点。我的网络应用程序或 VS 中都没有收到任何错误。我已配置“local.settings.json”以连接到我的 SignalR 实例。

我想做的事情根本不可能吗?我是否需要将更改部署到 Azure 才能测试新代码?

  • 我正在使用安装了 Azure 开发工作负载的 Visual Studio 2022。
  • 我的版本是.NET 6。
  • 使用 Microsoft.Azure.Webjobs.Extensions.SignalRServicce 1.8.0