IIS 7.5では、SignalRアプリケーションは常に長いポーリングを使用していました。私の検索によると、IIS7.5はまだWebSocketをサポートしていません。
IIS7.5でWebSocketを有効にするためのツールや構成を見逃してしまったことを願っています。または私はしませんでしたか?
WebSocketは、HTTP.sysレベルの変更が必要なため、IIS 7.5(つまり、Windows Server 2008R2またはWindows7)では使用できません。したがって、WebSocketを活用するには、IIS8.0とWindowsServer2012またはWindows8の組み合わせが必要です。また、IIS Express 8.0はWebSockectもサポートしていますが、Windows8またはWindowsServer 2012よりも低いOSを使用している場合は、それを利用することはできません。
IIS 7.5 を使用して Windows 2008r2 でホストするために必要なセットアップ手順の概要を次に示します。
SignalR アプリケーションの web.config ファイルを更新して、"すべての要求に対してすべてのマネージ モジュールを実行する" を有効にします (略して、これは RAMMFAR 設定です)。
SignalRを使用してサーバーと通信する Web ページを更新します。json2.js ライブラリへの参照を追加します。コンテンツを強制的に最近のブラウザー モードで表示するタグを追加します。
次のように、IIS 7.5 を使用して Windows Server 2008r2 をセットアップします。 SignalR アプリケーションに必要な .NET Framework バージョンをインストールします。サイトを作成し、適切なアプリケーション プールに関連付けます。
Signalr アプリケーションの Web.config ファイルを更新する
SignalR アプリケーションの web.config ファイルで、RAMMFAR 設定を追加して、すべての要求に対してすべてのマネージド モジュールを実行できるようにします。この設定は、SignalR サンプル アプリケーションを Windows 2008r2 および IIS 7.5 のすべてのブラウザーで実行するために必要でした。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
SignalR を使用する Web ページを更新する
SignalR を使用してサーバーと通信するアプリケーション Web ページで、次のコードを追加します。
json2.js JSON パーサー ライブラリへの参照を追加します。このスクリプトは、JSON パーサーを持たない以前のブラウザー バージョン用の JSON パーサーを提供します。スクリプトは次の 2 つの方法のいずれかで追加できます。NuGet パッケージ json2.js をプロジェクトに追加し、それを Web ページで参照します。
または、代わりに、CDN で json2.js を参照します。
ページの head セクションに次のタグを追加します。このタグ、特に IE=edge 値は、SignalR コードの動作を妨げる以前のモード (IE7 など) ではなく、利用可能な最新バージョンでコンテンツを表示するように Internet Explorer に強制します。
Windows Server 2008r2 と IIS 7.5 をセットアップする
前述のように、.NET 4 の「SignalR 入門」チュートリアルからサンプルの SignalR アプリケーションを作成しました。これは、Windows 2008r2 および IIS 7.5 での一般的なホスティング シナリオです。サーバーは、Windows Server 2008r2 および IIS 7.5 の新しい既定の既定のインストールでした。
必要な .NET Framework バージョンをインストールします。この場合、.NET Framework 4 をインストールしました。IIS マネージャーで新しいサイトを作成し、そのサイトをアプリケーション プールに関連付けます。統合モードのアプリケーション プールを使用します。クラシック モードは SignalR ではサポートされていません。このアプリケーションでは、ASP.NET v4.0 アプリケーション プールを使用しました。
上記のセットアップ手順を実行した後、.NET Framework 4 ベース バージョンの SignalR 入門サンプルをサーバーにデプロイすることができ、IE (バージョン 8、9、および 10)、Chrome、およびフォールバック トランスポート メソッド (IE では永久フレーム、他のブラウザーではサーバーから送信されたイベント) を使用していましたが、Firefox はそうではありませんでした。SignalR 開発者にとって興味深いのは、上記の手順を除けば、アプリケーション内の SignalR コードを 1 行も変更しなくても、この作業を実行できることです。
これは単純なケースですが、Websocket サポートがサーバーで利用できない場合、SignalR が以前のトランスポート メカニズムへの "自動フォールバック" を実際にサポートしていることを示しています。