3

ハブを統合する既存の MVC アプリケーションがあり、次のようにハブをセットアップしました。

routeTable.MapHubs("myapp/chat/room", new HubConfiguration { EnableCrossDomain = true, EnableDetailedErrors = true, EnableJavaScriptProxies = true });

次に、クライアント側で次のように接続しています。

var connection = $.hubConnection(SystemConfiguration.ServiceUrl + "/myapp/chat/room", { useDefaultPath: false });
var hub = this.Connection.createHubProxy("ChatHub"); // Same name as on the hub attribute
connection.start().done(function(){ /* do stuff */});

次に、HTTP リクエストが次のように表示されます。

http://localhost:23456/myapp/chat/room/negotiate?_=1374187915970

応答ヘッダー

Access-Control-Allow-Cred...    true, true
Access-Control-Allow-Head...    content-type, x-requested-with, *
Access-Control-Allow-Meth...    GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Orig...    http://localhost:34567, http://localhost:34567
Access-Control-Max-Age  10000
Cache-Control   no-cache
Content-Length  420
Content-Type    application/json; charset=UTF-8
Date    Thu, 18 Jul 2013 22:52:18 GMT
Expires -1
Pragma  no-cache
Server  Microsoft-IIS/8.0
X-AspNet-Version    4.0.30319
X-Content-Type-Options  nosniff

リクエスト ヘッダー

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Host    localhost:23456
Origin  http://localhost:34567
Referer http://localhost:34567/myapp/chat?chatId=1764a2e3-ff6f-4a17-9c5f-d99642301dbf
User-Agent  Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0

応答には本文が含まれていませんが、ステータスは 200 です...サーバーでデバッグしていますが、ハブ メソッドがヒットすることはありません。このシナリオでの唯一の非標準的なことは、応答でわかるように、トラフィックをインターセプトし、CORS に必要なヘッダーを追加するカスタム CORS HttpModule があることです。とにかく、HttpModule がヒットしていることがわかるので、そこをうまく通り過ぎますが、そことハブの間で何らかの形で失われます。

グーグルを試してみましたが、このトピックに関する情報はあまりありません...

4

1 に答える 1

1

この問題は、HttpModule レベルでの CORS 処理にあるようです。SignalR と何らかの形で競合する必要があります。モジュールにチェックを入れて、URL に「chat/room」が含まれているかどうかを確認し、必要に応じて要求を無視すると、その後は問題なく動作しますが、ハックのように感じますが、少なくとも現在は動作しています。

于 2013-07-19T08:54:42.697 に答える