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
Eseguire una GroupBy per entity in Entity Framework
Eseguire attività pianificate con Azure Container Jobs
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Miglioramenti nell'accessibilità con Angular CDK
Generare file PDF da Blazor WebAssembly con iText
Utilizzare un service principal per accedere a Azure Container Registry
Utilizzare gli snapshot con Azure File shares
Hosting di componenti WebAssembly in un'applicazione Blazor static
Eseguire attività basate su eventi con Azure Container Jobs
Elencare le container images installate in un cluster di Kubernetes
Controllare gli accessi IP alle app con Azure Container Apps
I più letti di oggi
- Evitare il flickering dei componenti nel prerender di Blazor 8
- Rilasciata la Beta 2 di Visual Studio 2008
- tra pochi minuti inizia la keynote della seconda giornata. seguila live su http://aspitalia.com/mix-11 #mix11
- .@dbochicchio ora su #aspnetcore 2 a #netconfit https://aspit.co/netconf-17
- Utilizzare angular-cli per creare una direttiva in Angular 2
- Windows Vista: il ritorno di WinFS con la beta1
- .@CristianCivera tra poco su #azure con i suoi tips&tricks per lo sviluppatore web: https://aspit.co/web15-live #aspilive
- Le novità di C# 10