2014-07-17 13 views
5

Ho un server signalr 2.0 che dovrebbe servire i domini multipli .. Quindi è necessario abilitare CORS nel mio server. Io utente iis7.5 come server web. ho attivato il CORS in Startup metodo del mio progetto come segueIl dominio incrociato non funziona con signalr 2.0

public void Configuration(IAppBuilder app) 
     { 
     app.Map("/signalr", map => 
      { 
       // Setup the CORS middleware to run before SignalR. 
       // By default this will allow all origins. You can 
       // configure the set of origins and/or http verbs by 
       // providing a cors options with a different policy. 
       map.UseCors(CorsOptions.AllowAll); 
       var hubConfiguration = new HubConfiguration 
       { 
        // You can enable JSONP by uncommenting line below. 
        // JSONP requests are insecure but some older browsers (and some 
        // versions of IE) require JSONP to work cross domain 
        // EnableJSONP = true 
       }; 
       // Run the SignalR pipeline. We're not using MapSignalR 
       // since this branch already runs under the "/signalr" 
       // path. 
       map.RunSignalR(hubConfiguration); 
} 
} 

Questo codice è copia e incollato da questo articolo http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client

Ho creato un progetto di localhost e provo a collegarmi a signalr server.

ma ottengo il seguente errore nel firefox

Richiesta Cross-Origin bloccati: La stessa politica di origine non consente la lettura della risorsa remota a http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622027746 Questo può essere risolto spostando la risorsa allo stesso dominio o attivare CORS . negoziare

e questo errore in cromo XMLHttpRequest non può caricare http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622032883. Nessuna intestazione 'Access-Control-Allow-Origin' è presente sulla risorsa richiesta. Origine '(Il mio cliente indirizzo del sito)' non è quindi consentito l'accesso

aggiungo anche le seguenti linee al mio web.config

<httpProtocol> 
     <customHeaders> 
     <clear /> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     </customHeaders> 
    </httpProtocol> 

Tale variazione è anche inutile.

+0

Non sono sicuro che questo aiuti, ma in un'applicazione angolare che utilizza "*" non ha funzionato, abbiamo dovuto specificare il dominio esatto. – epitka

+0

Tutto ciò che sappiamo è che le intestazioni non vengono impostate correttamente. Puoi aggiungere le intestazioni alla tua domanda? –

+0

Suggerisco di usare il violinista per ispezionare le intestazioni che il server sta effettivamente inviando; senza quello, è tutto congetture –

risposta

5

Prova removing WebDAV modulo nella configurazione (mi ha aiutato un po 'di tempo fa):

<configuration>    
    <system.webServer>     
     <modules> 
      <remove name="WebDAVModule" /> 
... 
1

Nel vostro utilizzo Application_Start sottostante Codice utilizzare il metodo di sovraccarico delle MapHubs

var hubConfiguration = new HubConfiguration(); 
hubConfiguration.EnableCrossDomain = true; 
RouteTable.Routes.MapHubs(hubConfiguration); 
+6

EnableCrossDomain non è in Signal 2. –

1

Finalmente il mio problema è risolto dopo un sacco di difficoltà. Sembra che un conflitto di numeri di porta causi questo problema. Interrompo altri siti Web sul mio server e interrompo qualsiasi altro servizio iis express e quindi funziona correttamente. Grazie per l'attenzione alla mia domanda.

3

L'ho sperimentato oggi, e dopo aver frugato un po ', ho scoperto che l'installazione del pacchetto Microsoft.Owin.Cors ha risolto il problema per me.

basta eseguire il seguente comando nella console Package Manager:

Install-Package Microsoft.Owin.Cors 

Genera, e ricaricare la pagina.

Problemi correlati