Nella mia applicazione ho una notifica di socket che funziona alla grande quando viene eseguita localmente, ma quando si esegue il deployment sulla mia VM, si lamenta di dare il seguente messaggio.SignalR "Errore durante la richiesta di negoziazione"
Error: Error during negotiation request.
at Object.signalR._.error (jquery.signalR.js:178)
at signalR.fn.signalR.start.onFailed (jquery.signalR.js:644)
at Object.signalR.fn.signalR.start.connection._.negotiateRequest.signalR.transports._logic.ajax.error (jquery.signalR.js:664)
at n.Callbacks.j (jquery.js:3094)
at Object.n.Callbacks.k.fireWith [as rejectWith] (jquery.js:3206)
at x (jquery.js:8261)
at XMLHttpRequest.n.ajaxTransport.k.cors.a.crossDomain.send.b (jquery.js:8600)
sta andando tra domini, ma credo di aver ottenuto oltre le questioni CORS, ma potrei sbagliarmi.
EDIT
Ecco informazioni aggiuntive che so sarà chiesto.
Richiesta:
GET http://path.to.my.vm/api/notifications/emmit/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22testemitter%22%7D%5D&_=1432140840826 HTTP/1.1
Host: path.to.my.vm
Connection: keep-alive
Accept: text/plain, */*; q=0.01
Origin: http://localhost:8100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost:8100/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en,fr;q=0.8,en-US;q=0.6
Risposta:
HTTP/1.1 500 Internal Server Error
Date: Wed, 20 May 2015 17:01:18 GMT
Server: Mono-HTTPAPI/1.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers: x-requested-with, Content-Type, origin,authorization, accept, client-security-token
Content-Length: 0
Connection: close
EDIT
supporto CORS è l'installazione sul server.
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR("",new HubConfiguration()
{
EnableJavaScriptProxies = true
});
Hai impostato il supporto cors sul server? In particolare, è necessario modificare la chiamata a MapHubs per abilitare le richieste tra domini. –
@WilliamXifaras Sì, ho appena modificato il mio post. Ho il 'UseCors (CorsOptions.AllowAll)' – TheJediCowboy
Sei sicuro che questo sia CORS che sta causando il problema? Vorrei provare prima senza CORS (ad esempio, creare un client C# veloce e sporco) per assicurarmi che l'app funzioni davvero. In questo momento, potresti provare a risolvere un problema sbagliato. – Pawel