SignalR 1.x プロジェクトをバージョン 2 にアップグレードする

作成者: Patrick Fletcher

警告

このドキュメントは、最新版の SignalR を対象としていません。 ASP.NET Core SignalR に関する記事を参照してください。

このトピックでは、既存の SignalR 1.x プロジェクトを SignalR 2.x にアップグレードする方法と、アップグレード プロセス中に発生する可能性がある問題のトラブルシューティング方法について説明します。

チュートリアルで使用するソフトウェアのバージョン

このチュートリアルでは Visual Studio 2012 を使用します

このチュートリアルで Visual Studio 2012 を使用するには、次の操作を行います。

  • パッケージ マネージャーを最新バージョンに更新します。
  • Web Platform Installer をインストールします。
  • Web プラットフォーム インストーラーで、ASP.NET および Web Tools 2013.1 for Visual Studio 2012 を検索してインストールします。 これにより、Hub などの SignalR クラス用の Visual Studio テンプレートがインストールされます。
  • 一部のテンプレート (OWIN スタートアップ クラスなど) は使用できません。それらの代わりにクラス ファイルを使用します。

質問とコメント

このチュートリアルの感想、改善に関するフィードバックをページの下部にあるコメント欄にお寄せください。 チュートリアルに直接関連しない質問がある場合は、ASP.NET SignalR フォーラムまたは StackOverflow.com に投稿できます。

SignalR 2 は、OWIN を使って、サーバー プラットフォーム全体で一貫した開発エクスペリエンスを提供します。 この記事では、SignalR 1.x アプリケーションをバージョン 2 に更新するために必要ないくつかの手順について説明します。

アプリケーションを SignalR 2 にアップグレードすることが推奨されていますが、SignalR 1.x は引き続きサポートされています。

このチュートリアルでは、Web ホスト アプリケーションを SignalR 2 にアップグレードする方法について説明します。 セルフホステッド アプリケーション (コンソール アプリケーション、Windows サービス、またはその他のプロセスでサーバーをホストするアプリケーション) が SignalR 2 でサポートされるようになりました。 SignalR 2 を使ってセルフホステッド アプリケーションの作成を開始する方法については、「チュートリアル: SignalR セルフホスト」を参照してください。

内容

次のセクションでは、SignalR プロジェクトのアップグレードに関連するタスクと、発生する可能性のある問題のトラブルシューティング方法について説明します。

例: 概要のチュートリアル アプリケーションを SignalR 2 にアップグレードする

このセクションでは、SignalR 2 を使うように、SignalR 1.x バージョンの概要のチュートリアルで作成したアプリケーションを更新します。

  1. 概要のチュートリアルを完了したら、プロジェクトを右クリックし、[プロパティ] を選びます。 ターゲット フレームワーク.NET Framework 4.5 に設定されていることを確認します。

  2. パッケージ マネージャー コンソールを開きます。 次のコマンドを使って、プロジェクトから SignalR 1.x を削除します。

    Uninstall-Package Microsoft.AspNet.SignalR -RemoveDependencies
    
  3. 次のコマンドを使って SignalR 2 をインストールします。

    Install-Package Microsoft.AspNet.SignalR
    
  4. HTML ページで、SignalR のスクリプト参照を更新して、プロジェクトに現在含まれているスクリプトのバージョンと一致させます。

    <!--Reference the SignalR library. -->
    <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
    
  5. グローバル アプリケーション クラスで、MapHubs の呼び出しを削除します。

    protected void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.MapHubs();
    }
    
  6. ソリューションを右クリックし、[追加][新しい項目] の順に選びます。ダイアログで、[Owin スタートアップ クラス] を選びます。 新しいクラスに Startup.cs という名前を付けます。

    Screenshot that shows the Add New Item dialog box. OWIN Startup class is selected and Startup dot C S is in the Name field.

  7. Startup.cs の内容を次のコードに置き換えます。

    using Microsoft.Owin;
    using Owin;
    
    [assembly: OwinStartup(typeof(SignalRChat.Startup))]
    namespace SignalRChat
    {
       
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                app.MapSignalR();
            }
        }
    }
    

    アセンブリ属性は、Owin のスタートアップ プロセスにクラスを追加し、Owin の起動時に Configuration メソッドを実行します。 これにより、MapSignalR メソッドが呼び出され、アプリケーション内のすべての SignalR ハブのルートが作成されます。

  8. プロジェクトを実行し、前と同様に、メイン ページの URL を別のブラウザーまたはブラウザー ペインにコピーします。 各ページはユーザー名を要求し、各ページから送信されたメッセージは両方のブラウザー ペインに表示されます。

アップグレード中に発生したエラーのトラブルシューティング

このセクションでは、アップグレード中に発生する可能性のある問題について説明します。 SignalR アプリケーションで発生する可能性のあるエラーと問題のより包括的な一覧については、「SignalR のトラブルシューティング」を参照してください。

"次のメソッドまたはプロパティ間の呼び出しがあいまいです"

このエラーは、Microsoft.AspNet.SignalR.Owin への参照が削除されていない場合に発生します。 このパッケージは非推奨です。参照を削除し、SelfHost パッケージの 1.x バージョンをアンインストールする必要があります。

ハブ メソッドが警告なしで失敗する

クライアントのスクリプト参照が最新であること、Startup クラスの OwinStartup 属性にプロジェクトの正しいクラス名とアセンブリ名が設定されていることを確認します。 また、ブラウザーでハブのアドレス (/signalr/hubs) を開いてみます。表示されるエラーにより、何が問題なのかについての詳しい情報が得られます。