2013-01-02 14 views
24

Su IIS 7.5, l'applicazione SignalR utilizzava sempre il polling lungo. Come per la mia ricerca, IIS 7.5 non supporta ancora WebSockets.SignalR WebSockets su IIS 7.5

Spero di aver perso alcuni strumenti o configurazioni per abilitare WebSockets in IIS 7.5. O non l'ho fatto?

+0

Non uso IIS, ma è possibile scrivere il proprio server (programma) che eseguirà questa roba per voi. Con websockets puoi connetterti dal browser a qualsiasi server e porta. – Zaffy

+0

@Zaffy: Grazie. Ma perderò la funzione auto-fallback di SignalR se WebSockets non è disponibile. – ZeroHackeR

+0

questa risposta http://stackoverflow.com/questions/17957949/does-self-hosted-signalr-require-windows-server-2012-in-order-to-use-websockets spiega perché non è possibile in modo più dettagliato le altre risposte – wal

risposta

-16

Ecco un riepilogo dei passaggi di configurazione richiesti per l'hosting su Windows 2008r2 con IIS 7.5:

Update the SignalR application's web.config file per abilitare "esegui tutti i moduli gestiti per tutte le richieste" (in breve, questa è l'impostazione RAMMFAR).

Update the web page that uses SignalR per comunicare con il server: Aggiungere un riferimento alla libreria json2.js. Aggiungi un tag che impone la visualizzazione del contenuto in una modalità browser recente.

Set up a Windows Server 2008r2 with IIS 7.5 come segue: Installare la versione .NET Framework richiesta dall'applicazione SignalR. Creare un sito e associarlo al pool di applicazioni appropriato.

Aggiornamento del Signalr Application web.config file

Nel file web.config dell'applicazione SignalR, aggiungere l'impostazione per consentire l'esecuzione di tutti i moduli gestiti per tutte le richieste RAMMFAR. Questa impostazione era necessaria per ottenere l'applicazione di esempio SignalR in esecuzione su Windows 2008r2 e IIS 7.5 in tutti i browser.

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
    </modules> 
</system.webServer> 

Aggiornare la pagina Web che utilizza SignalR

Nella pagina web applicazione che utilizza SignalR per comunicare con il server, aggiungere il seguente codice.

Aggiungere un riferimento alla libreria del parser JSON json2.js. Questo script fornisce un parser JSON per versioni precedenti del browser che non ce l'hanno. È possibile aggiungere lo script in uno dei due modi: Aggiungere i json2.js pacchetto Nuget al progetto, e quindi fare riferimento nella vostra pagina web:

o in alternativa, json2.js di riferimento su un CDN :

Aggiungere il tag seguente nella sezione di testa della pagina. Questo tag, in particolare il valore IE = edge, obbliga Internet Explorer a visualizzare il contenuto nella versione più recente disponibile, piuttosto che le modalità precedenti (come IE7) che impediscono il funzionamento del codice SignalR.

Configurare Windows Server 2008R2 e IIS 7.5

Come notato, ho costruito l'applicazione di esempio SignalR dalla Guida introduttiva di SignalR tutorial su .NET 4. Questo è uno scenario comune di hosting su Windows 2008R2 e IIS 7.5.Il server era una nuova installazione predefinita predefinita di Windows Server 2008r2 e IIS 7.5.

Installare la versione .NET Framework richiesta. In questo caso ho installato .NET Framework 4. Creare un nuovo sito in Gestione IIS e associare il sito a un pool di applicazioni. Usa pool di applicazioni in modalità integrata, la modalità classica non è supportata per SignalR. Per questa applicazione ho utilizzato il pool di applicazioni ASP.NET v4.0.

Dopo aver seguito i passaggi di installazione precedenti, sono stato in grado di distribuire la versione di .NET Framework 4 dell'esempio Getting Started con SignalR sul server e ha funzionato perfettamente in IE (versioni 8, 9 e 10) , Chrome e Firefox anche se utilizzava metodi di trasporto di fallback (per sempre frame in IE e eventi inviati dal server negli altri browser). La cosa interessante per gli sviluppatori SignalR è che, a parte i passaggi precedenti, non ho dovuto modificare una singola riga del codice SignalR in qualsiasi punto dell'applicazione per farlo funzionare.

Questo è un caso semplice, ma mostra che SignalR supporta realmente il "ripiego automatico" sui precedenti meccanismi di trasporto quando il supporto websockets non è disponibile sul server.

+0

Ora sto usando Server 2012. Lo proverò quando avrò tempo. :) – ZeroHackeR

+8

Questa risposta non affronta come utilizzare Websockets in IIS 7.5, semplicemente perché non è possibile. – vtortola

+0

Non è la risposta! –

39

Non è possibile utilizzare WebSocket su IIS 7.5 (in altre parole su Windows Server 2008 R2 o Windows 7) perché richiede modifiche a livello HTTP.sys AFAIK. Pertanto, è necessario utilizzare IIS 8.0 e Windows Server 2012 o Windows 8 per sfruttare WebSocket. Inoltre, IIS Express 8.0 supporta WebSockect, ma non è ancora possibile sfruttarlo se si utilizza un sistema operativo inferiore a Windows 8 o Windows Server 2012.

+0

Esistono strumenti di terze parti? Sto facendo lo sviluppo su Win 8, ma il mio server è su Win Server 2008 R2. Controllerò con il fornitore di hosting. – ZeroHackeR

+0

@ZeroHackeR Non ho idea ma credo che StackExchange usi la tecnologia WebSocket e che siano su Windows Server 2008 R2. Non ho idea di come lo facciano. Inoltre, non si tratta solo di te e dei browser dei tuoi clienti. Qualsiasi proxy nel mezzo deve supportare anche WebSocket. A proposito, è strano che l'app SignalR usi sempre il polling lungo. Mi aspetterei che utilizzi almeno per sempre frame in IE o SSE in altri browser. – tugberk

+1

Questa era la risposta corretta, grazie! – Brunis

4

IIS 8 Express supporta WebSockets New Features

Windows 7 è considerato un sistema verso il basso livello di funzionamento e non supporta Sockets Web. Known Issues and Limitations

Tempo di aggiornamento a Windows 8 se si desidera supportare socket Web!