- TFS 2013
- Windows Server 2012
- IIS 8.5
- アプリケーション リクエスト ルーティング (ARR)
リバース プロキシに ARR を使用して、そのサーバー上の URL に対するすべての要求を、そのサーバー上の TFS 用に設定した IP アドレスに再ルーティングしています。
Chrome を除いて、すべてがうまく機能します (あまり頻繁に言う必要はありません)。
TFS インストールの Web バージョンを参照して「チーム ルーム」にアクセスすると、Chrome コンソールに SignalR エラーが表示されます。
403 (禁止: SignalR クロス ドメインが無効になっています。)
FF と IE の同じリンクは正常に機能します。また、TFS IP アドレスを介して (ARR をバイパスして) チーム ルーム リンクに直接アクセスすると、問題なく動作します。
問題を解決するために、さまざまなことを試しました。
このヘッダーを TFS の web.config に追加する
<add name="Access-Control-Allow-Origin" value="http://tfs.mydomain.com"/>
JavaScript で SignalR 接続の接続 URL を設定し、JSONP を次のように使用します。
$.connection.hub.url = "http://my.ip.address:8080/tfs/signalr";
options = ({jsonp: true})
$.connection.hub.start(options)
ARRのキャッシュを無効にするオンラインで見つけた別のアプローチも試しました。
そこにある多くのソリューションは、サーバー上のSignalRのクロスドメイン要求を有効にする必要があると言いますが、これはTFSインストール用であるため、TFSのバイナリを変更する自由はありません(私が知る限り)。 SignalR API を調べても、クライアントでこれを行う方法を見つけることができません。
この問題について私が見つけた他の唯一の答えは、Chrome にバグがあり、それを使用しないことです (これは望ましくありません)。
Chrome を使用して TFS チーム ルーム機能にアクセスする方法を知っている人はいますか?