Зависимость SignalR должна быть введена с помощью действия ConfigureWebJobs на HostBuilder, а не действия ConfigureServices, например:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.SignalRService;
namespace InSysWebJobHubDataProcessor
{
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddServiceBus().AddSignalR();
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
}
В моем случае я извлекаю сообщения из служебной шины ивыталкивая их в различные группы SignalR.Поэтому подпись моей функции:
[FunctionName("ProcessQueueData")]
public async Task RunAsync([ServiceBusTrigger("queuename", Connection = "ServiceBusConnection")]Message message, [SignalR(HubName = "myhub")] IAsyncCollector<SignalRMessage> signalRMessages, ILogger log)
, и я отправляю сообщения в службу SignalR с:
await signalRMessages.AddAsync(new SignalRMessage
{
GroupName = "groupName",
Target = "clientFunctionName",
Arguments = new[] { JsonConvert.SerializeObject(result.Payload) }
});