Condividi tramite


SignalR: metodi UseSignalR e UseConnections rimossi

In ASP.NET Core 3.0 SignalR ha adottato il routing degli endpoint. Come parte di tale modifica, UseSignalR, UseConnections e alcuni metodi correlati sono stati contrassegnati come obsoleti. In ASP.NET Core 5.0 questi metodi obsoleti sono stati rimossi. Per l'elenco completo dei metodi, consultare API interessate.

Per informazioni su questo problema, vedere dotnet/aspnetcore#20082.

Versione introdotta

5.0 Preview 3

Comportamento precedente

Gli hub SignalR e i gestori di connessione possono essere registrati nella pipeline middleware usando i metodi UseSignalR o UseConnections.

Nuovo comportamento

Gli hub SignalR e i gestori di connessione devono essere registrati all'interno di UseEndpoints usando i metodi di estensione MapHub e MapConnectionHandler in IEndpointRouteBuilder.

Motivo della modifica

I metodi precedenti avevano una logica di routing personalizzata che non interagisce con altri componenti di routing in ASP.NET Core. In ASP.NET Core 3.0 è stato introdotto un nuovo sistema di routing per utilizzo generico, denominato routing degli endpoint. Il routing degli endpoint ha abilitato SignalR per interagire con altri componenti di routing. Il passaggio a questo modello consente agli utenti di sfruttare appieno i vantaggi del routing degli endpoint. Di conseguenza, i metodi precedenti sono stati rimossi.

Rimuovere il codice che chiama UseSignalR o UseConnections dal metodo di Startup.Configure del progetto. Sostituirlo con le chiamate rispettivamente a MapHub o MapConnectionHandler, all'interno del corpo di una chiamata a UseEndpoints. Ad esempio:

Codice precedente:

app.UseSignalR(routes =>
{
    routes.MapHub<SomeHub>("/path");
});

Nuovo codice:

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<SomeHub>("/path");
});

In generale, le chiamate precedenti MapHub e MapConnectionHandler possono essere trasferite direttamente dal corpo di UseSignalR e UseConnections a UseEndpoints con modifiche minime o non necessarie.

API interessate