AspNetCore.SignalR: Impossible de démarrer une connexion qui n’est pas à l’état initial

J’ai des problèmes pour faire fonctionner mon application ASP.NET Core SignalR.

J’ai ce code côté serveur:

public class PopcornHub : Hub { private int Users; public async Task BroadcastNumberOfUsers(int nbUser) { await Clients.All.InvokeAsync("OnUserConnected", nbUser); } public override async Task OnConnectedAsync() { Users++; await BroadcastNumberOfUsers(Users); await base.OnConnectedAsync(); } public override async Task OnDisconnectedAsync(Exception exception) { Users--; await BroadcastNumberOfUsers(Users); await base.OnDisconnectedAsync(exception); } } 

dont le service SignalR Hub est configuré comme suit:

 public void ConfigureServices(IServiceCollection services) { ... services.AddSignalR(); ... } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { ... app.UseSignalR(routes => { routes.MapHub("popcorn"); }); ... } 

Dans mon application côté client (application WPF), j’ai un service:

 public class PopcornHubService : IPopcornHubService { private readonly HubConnection _connection; public PopcornHubService() { _connection = new HubConnectionBuilder() .WithUrl($"{Utils.Constants.PopcornApi.Replace("/api", "/popcorn")}") .Build(); _connection.On("OnUserConnected", (message) => { }); } public async Task Start() { await _connection.StartAsync(); } } 

Mon problème est que, lorsque j’appelle la méthode Start (), j’obtiens l’exception “Impossible de démarrer une connexion qui n’est pas à l’état initial”. Le problème se produit localement ou dans Azure.

Le sharepoint terminaison SignalR est correct mais aucune connexion ne peut être établie. Qu’est-ce que je rate?

Vous semblez essayer de démarrer une connexion qui a déjà été établie. Notez également qu’à partir de la version alpha2, la connexion ne peut pas être redémarrée. En d’autres termes, si elle est arrêtée, vous ne pouvez pas la redémarrer. Vous devez créer une nouvelle connexion.

MODIFIER

Dans les versions post-alpha2, la connexion pourra être redémarrée.