アプリケーションにソケット通知があり、ローカルで実行すると問題なく機能しますが、VMにデプロイすると、次のメッセージが表示されます。
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)
それはドメインを越えていますが、私はCORSの問題を乗り越えたと思いますが、私は間違っている可能性があります。
[〜#〜]編集[〜#〜]
これは私が尋ねられることを知っている追加情報です。
リクエスト:
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
応答:
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
[〜#〜]編集[〜#〜]
CORSサポートはサーバーでセットアップされます。
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR("",new HubConfiguration()
{
EnableJavaScriptProxies = true
});
また、信号ホストでWebSocketsが有効になっていることを確認してください。 Windows PCの場合は、コントロールパネル->プログラム-> Windowsの機能をオンまたはオフにして、WebSocketが有効になっているかどうかを確認します。
Windowsサーバーの場合、MicrosoftはWebSocketを有効にする方法を段階的に説明しています http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis -80-websocket-protocol-support 。
Signalr構成でCORSをセットアップしましたが、同じエラーが発生し、それが私の問題であることがわかりました。それが役に立てば幸い!
WebプロジェクトからsignalRハブに接続するときに同じ問題が発生し、追加しました
<add input="{REQUEST_URI}" pattern="^/(signalr)" negate="true" />
web.configファイルのルールを書き換えると、signalRハブに到達できるようになりました。
クライアントハブの接続コードは以下のとおりです
$.hubConnection('/signalr', { useDefaultPath: false });