c# - Azure SignalRTrigger 无法与 Azure Functions 一起使用

标签 c# wpf azure-functions .net-6.0 azure-signalr

我已使用 Azure Functions 创建了 Azure SignalR 无服务器服务。 我的客户端是一个 .NET 6 WPF 应用程序。

协商功能按预期工作,连接成功建立。 CosmosDBTriggerHttpTriggerTimerTrigger 函数也按预期工作。 但是,SignalRTrigger 不起作用,我不明白为什么。

SignalRTrigger函数:

[FunctionName("SignalRTest")]
public async Task SignalRTest([SignalRTrigger("myHub", "messages", "SignalRTest")] InvocationContext invocationContext, string message, ILogger logger)
{
    logger.LogInformation($"Receive {message} from {invocationContext.ConnectionId}.");
    await Clients.All.SendAsync("signalRTestMessage", message);
}

客户端配置:

connection = new HubConnectionBuilder()
             .WithUrl("https://<SiteURL>.azurewebsites.net/api")
             .Build();
             
await connection.StartAsync().ContinueWith(async (e) =>
{
    try
    {
        await connection.InvokeAsync("SignalRTest", "TestMessage");
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
});

异常总是返回错误消息:

Invocation failed, status code 404

我已使用 Azure Functions 中生成的 signalr_extension key 配置了 SignalR 上游。

我已关注 Microsoft docs 上的官方文档但仍然无法解决问题。

最佳答案

我对你表示同情,因为我们一直在努力发送消息,尽管如此多的文档使它显得微不足道。我对您的情况的一个想法是:创建 hubConnection 时是否应该使用协商响应中的 URL?

下面是我们的 typescript 示例,该示例使用 NegotiateResponse 对象以及从协商 HTTP 调用返回的 URL 和 AccessToken:

this.signalRService.negotiate().subscribe({
  next: (negotiateResponse) => {
      let options = {
        accessTokenFactory: () => negotiateResponse.accessToken,
      };

  const connection = new signalR.HubConnectionBuilder()
      .withUrl(negotiateResponse.url, options)
      .build();

附注如前所述,我们也在消息发送方面遇到困难,因此这可能不是您的解决方案,尽管我希望如此。

关于c# - Azure SignalRTrigger 无法与 Azure Functions 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74287409/

相关文章:

c# - 将 IQueryable<int> 分配给 IQueryable<object> 时出现编译错误

c# - 如何使用 Linq 获取不在某个时间段内的前两个连续日期时间点?

c# - Windows 8 - 在 For 循环中异步等待时出现线程错误

c# - 根据您放入另一个 WPF 的信息将值/打开文件放入 WPF

wpf - 是否存在 ViewModel 需要在 View w.r.t 上调用方法的场景? WPF中的MVVM?

c# - 单击和双击事件在 Canvas 中无法按预期工作

azure - 在 Azure Function Apps 中保守 secret

c# - WCF PerCall 共享资源锁问题

c# - 来自服务总线队列的消息在事件功能出错时消失

azure - 从 Azure Function 访问 Azure 文件存储