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
Rigenerare il database negli integration test di ASP.NET Core
Utilizzare Live metrics con le Azure Functions
Applicare filtri alla telemetria di Application Insight con ASP.NET Core
ASP.NET Core 5 & Blazor 5
Utilizzare gli operatori di RxJS per gestire operazioni asincrone con Javascript e TypeScript
Versioning automatico degli Azure Storage Blob
Hidden gems in Azure SQL that will make every developer want to use it!
Tradurre in lingua contenuti HTML con i cognitive service
Single Page Application con .NET 5
L'agenda di #netconfit è online => https://aspit.co/netconfit-20 3 track, tante sessioni e una keynote speciale di @shanselman per la più importante conferenza in lingua italiana su .NET! Vi aspettiamo il 24/11. Iscrizioni sempre aperte! #donet #aspnet #netconf
UI testing in applicazioni .NET desktop e mobile
Progressive Web Apps with React
I più letti di oggi
- Testare le impostazioni CORS di un'applicazione ASP.NET Core
- Modificare la modalità di esecuzione delle query con Include in Entity Framework Core 5
- Effettuare l'upload di un file da Blazor su Azure Blob Storage
- Creare un web server locale con LiveReload
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Esecuzione condizionale dei task nelle pipeline YAML di Azure DevOps