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

作成者: Patrick Fletcher

警告

このドキュメントは、SignalR の最新バージョン用ではありません。 SignalR の ASP.NET Coreを見てみましょう。

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

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

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

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

  • パッケージ マネージャーを最新バージョンに更新します。
  • Web プラットフォーム インストーラーをインストールします。
  • Web プラットフォーム インストーラーで、ASP.NET and 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 1.x バージョンの はじめに Tutorial で作成したアプリケーションを SignalR 2 を使用するように更新します。

  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 という名前を付けます

    [新しい項目の追加] ダイアログ ボックスを示すスクリーンショット。OWIN Startup クラスが選択され、スタートアップ ドット C S が [名前] フィールドに表示されます。

  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();
            }
        }
    }
    

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

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

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

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

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

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

ハブ メソッドがサイレントモードで失敗する

クライアント内のスクリプト参照が最新であり、Startup クラスの OwinStartup 属性にプロジェクトの正しいクラス名とアセンブリ名があることを確認します。 また、ブラウザーでハブ アドレス (/signalr/hubs) を開いてみてください。表示されるエラーは、問題の詳細を提供します。