2016-04-13 5 views
0

私は、OWINと認証を使用しているWeb APIインスタンスでSignalRを動作させようと試みています。 CORS(SOの助けを借りて)を見つけた後、私はほとんどそこにいます。クライアントで生成されたSignalRへの不正なパス

WebクライアントがコンソールでJavascriptエラーで失敗します。

http://localhost:45325/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&_=1460577212205 404 (Not Found) 

私はこのURLをブラウザに入れて、十分に私が404エラーを受け取ったとします。私は...私はSignalR connectionid、すべてとの適切なJSONレスポンスを取得し、そのような...

http://localhost:45325/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&_=1460577212205 

としてパスに

{ 
"Url": "/signalr", 
"ConnectionToken": "<token here>", 
"ConnectionId": "0bf84c7a-0a28-4da9-bb9f-551de894cf0e", 
"KeepAliveTimeout": 20, 
"DisconnectTimeout": 30, 
"ConnectionTimeout": 110, 
"TryWebSockets": true, 
"ProtocolVersion": "1.5", 
"TransportConnectTimeout": 5, 
"LongPollDelay": 0 
} 

/signalr/を追加した場合、すべてが働いているかのようしかし、だから見えますクライアントがSignalRハブに接続するために生成しているURLに/signalrが存在しないこと以外は、

ここは、ハブに接続するクライアント側のJavascriptです。パスを指定するにはどこに/signalrを含める必要がありますか?私は思ったので、私はすでにだった...あなたは私が<script src="signalr/hubs"></script>が含まれていなかったことに気づくかもしれ

<script src="scripts/jquery-2.2.2.min.js"></script> 
<script src="scripts/jquery.signalR-2.2.0.js"></script> 
<script> 
(function ($) { 
    $(function() { 
     var connection = $.hubConnection('/signalr/', {useDefaultPath: false}); 
     var myHubProxy = connection.createHubProxy('MyHub'); 
     myHubProxy.on('notify', function (username) { 
      console.log(username + ' has logged in'); 
      alert(username + ' has logged in'); 
     }); 

     connection.url = 'http://localhost:45325'; 

     connection.start() 
      .done(function() { 
       alert('Connected to MyHub: Connection ID = ' + connection.id); 
      }) 
      .fail(function(e) { 
       console.log('Connection error: ' + e); 
      }); 
    }); 
})(jQuery); 
</script> 

。これは、自動生成プロキシに頼るのではなく、プロキシを自分で作成したためです。

答えて

1

私はそれを理解しました。それは

connection.url = 'http://localhost:45325/signalr'; 

はおそらく、私は Startup.csの内側に私の public void Configuration(IAppBuilder)方法でそれを見ている必要があります...私は \signalrパスを追加するために必要なクライアント上の私のJavaScriptで

...私には明らかにされている必要があります私のWeb APIをのクラスは、私は次の..

app.Map("/signalr", map => 
{ 
    map.UseCors(CorsOptions.AllowAll); 
    var hubConfiguration = new HubConfiguration 
    { 
     // EnableJSONP = true; // I am not using as CORS is working just fine 
    }; 
    map.RunSignalR(hubConfiguration); 
}); 

が、私はサブディレクトリ"/signalr"

を指定していました
関連する問題