2014-07-17 5 views
5

Ich habe eine Signaler 2.0-Server, der die mehreren Domänen dienen soll .. Also müssen in meinem Server CORS aktivieren. Ich benutze iis7.5 als Webserver. aktivierte ich den CORS in Startup Methode von meinem Projekt alsCross-Domain funktioniert nicht mit Signalrner 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); 
} 
} 

folgte Dieser Code kopieren und aus diesem Artikel eingefügt http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client

ich ein localhost Projekt erstellt und versuche, signalr Server zu verbinden.

Aber ich erhalte den folgenden Fehler in Firefox

Cross-Origin-Anforderung blockiert: Die Same Origin Policy verweigert das die Remote-Ressource bei http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622027746 Lesen Dies kann durch Bewegen der Ressource zu der gleichen Domäne oder die Aktivierung CORS fixiert werden . verhandeln

und diese Fehler in Chrom XMLHttpRequest nicht http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622032883 laden kann. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Origin '(My Client-Site-Adresse)' ist daher nicht erlaubt Zugang für

ich auch noch die folgenden Zeilen zu meinem web.config

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

Diese Änderung war auch nutzlos.

+0

Nicht sicher, ob dies Ihnen helfen wird, aber in eckigen Anwendung mit "*" hat auch nicht funktioniert, mussten wir genaue Domain angeben. – epitka

+0

Alles, was wir wissen ist, dass die Header nicht richtig eingestellt sind. Können Sie die Header zu Ihrer Frage hinzufügen? –

+0

Ich empfehle, Fiddler zu verwenden, um die Header zu überprüfen, die Ihr Server tatsächlich sendet; ohne das ist es alles Rätselraten –

Antwort

5

removing WebDAV Modul in Ihrer Konfiguration Versuche (half mir vor einiger Zeit):

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

In Ihrer Application_Start Verwendung Code unten verwenden, um die überladene Methode der MapHubs

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

EnableCrossDomain ist nicht in Signal 2. –

1

Endlich mein Problem ist nach viel Mühe gelöst. Es scheint, dass ein Portnummernkonflikt dieses Problem verursacht. Ich stoppe andere Website auf meinem Server und stoppe andere IIS Express-Dienste und dann funktioniert es gut. Vielen Dank für Ihre Aufmerksamkeit auf meine Frage.

3

Ich habe dies heute erlebt, und nachdem ich ein wenig herum gestochert habe, habe ich festgestellt, dass die Installation des Microsoft.Owin.Cors-Pakets das Problem für mich gelöst hat.

einfach den folgenden Befehl in der Package Manager-Konsole ausführen:

Install-Package Microsoft.Owin.Cors 

gebaut, und die Seite neu.

Verwandte Themen