ASP.NET SignalR, quando utilizzato nell'ambito di un'applicazione web, sfrutta un client JavaScript per stabilire una connessione bidirezionale con il server. Il comportamento di default dei browser è quello di abilitare le chiamate solo sullo stesso dominio della pagina visualizzata.
Ciò impedisce, per esempio, di referenziare una stesso hub da applicazioni differenti, ospitate su domini differenti. Questo scenario può essere comunque gestito attivando il supporto a CORS (Cross Origin Resource Sharing) sul middleware Owin. Per farlo dobbiamo innanzitutto referenziare con NuGet il package Microsoft.Owin.Cors:
A questo punto, sul file Startup.cs in cui configuriamo ASP.NET SignalR, dobbiamo modificare il mapping come nel codice in basso:
public void Configuration(IAppBuilder app) { // ... app.Map("/signalr", x => { x.UseCors(CorsOptions.AllowAll); var hubConfig = new HubConfiguration() { EnableJSONP = true }; x.RunSignalR(hubConfig); }); }
Entrando nel dettaglio, la prima istruzione abilita CORS sull'URL relativo /signalr, permettendo l'acceso a qualsiasi client, a prescindere dall'URL, grazie all'opzione CorsOptions.AllowAll. Successivamente, per migliorare la compatibilità con le versioni più vecchie di Internet Explorer, abbiamo attivato anche il supporto a JSONP. L'istruzione RunSignalR finale, esegue ASP.NET SignalR sull'indirizzo specificato.
Per testare questo scenario, possiamo per esempio effettuare il deploy del sito su un Windows Azure Web Site e poi impostare, sulla nostra copia locale, la connessione verso 'indirizzo remoto:
$.connection.hub.url = 'http:/' + '/corstest.azurewebsites.net/signalr'; $.connection.hub.start().done(function () { // ... }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare alias per tipi generici e tuple in C#
Utilizzare database e servizi con gli add-on di Container App
Potenziare Azure AI Search con la ricerca vettoriale
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Assegnare un valore di default a un parametro di una lambda in C#
Creare moduli CSS in React
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Paginare i risultati con QuickGrid in Blazor
Usare il versioning con i controller di ASP.NET Core Web API
Le novità di Angular: i miglioramenti alla CLI
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)