如何调试net7 signalr azure功能工作者服务?

问题描述 投票:0回答:1

我正在使用 dotnet 7 isolated 函数
我安装了包 Microsoft.Azure.Functions.Worker.Extensions.SignalRService
在本地开发时,似乎调用了negiotate函数。 但是,我无法让我的网络客户端(角度)调用任何服务器端(SignalRTrigger属性)函数。

    public HostApi(SignalRService signalRService)
    {
        _signalRService = signalRService;
    } 
    
    
    [Function("Negotiate")]
    public SignalRConnectionInfo Negotiate([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequestData req,
        [SignalRConnectionInfoInput(HubName = "Hub", UserId = "{query.userid}")] SignalRConnectionInfo signalRConnectionInfo)
    {
        _logger.LogInformation("Executing negotiation.");
        return signalRConnectionInfo;
    }

    [Function("OnConnected")]
    [SignalROutput(HubName = "Hub")]
    public SignalRMessageAction OnConnected([SignalRTrigger("Hub", "connections", "connected")] SignalRInvocationContext invocationContext)
    {
        invocationContext.Headers.TryGetValue("Authorization", out var auth);
        _logger.LogInformation($"{invocationContext.ConnectionId} has connected");
        return new SignalRMessageAction("newConnection")
        {
            Arguments = new object[] { new NewConnection(invocationContext.ConnectionId, auth) },

        };
    }


    
 }  

关于如何解决这个问题有什么想法吗?

.net-core signalr dotnet-isolated
1个回答
0
投票

找到解决方案了!! 您需要使用signalr模拟器!!

执行命令:

 dotnet tool install  -g Microsoft.Azure.SignalR.Emulator --version 1.1.0
 asrs-emulator upstream init
 asrs-emulator start

运行这些命令应显示连接字符串。然后您需要复制 local.settings.json 文件中的值。喜欢这个:

"AzureSignalRConnectionString": "Endpoint=http://localhost;Port=8888;AccessKey=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH;Version=1.0;",
© www.soinside.com 2019 - 2024. All rights reserved.