Share via


將 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 Platform Installer 中,搜尋並安裝ASP.NET 和 Web 工具 2013.1 for Visual Studio 2012。 這會安裝 SignalR 類別的 Visual Studio 範本,例如 Hub
  • 某些範本 (,例如 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 版本中 建立的應用程式,以使用 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 啟動類別,而啟動點 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();
            }
        }
    }
    

    元件屬性會將 類別新增至 Owin 的啟動進程,這會在 Owin 啟動時執行 Configuration 方法。 這接著會呼叫 MapSignalR 方法,這會為應用程式中的所有 SignalR 中樞建立路由。

  8. 執行專案,並將主頁面的 URL 複製到另一個瀏覽器或瀏覽器窗格,如同先前一樣。 每個頁面都會要求使用者名稱,而且每個頁面所傳送的訊息應該會顯示在這兩個瀏覽器窗格中。

針對升級期間遇到的錯誤進行疑難排解

本節說明升級期間可能發生的問題。 如需 SignalR 應用程式可能發生之錯誤和問題的完整清單,請參閱 SignalR 疑難排解

「下列方法或屬性之間的呼叫模棱兩可」

如果未移除 的 Microsoft.AspNet.SignalR.Owin 參考,就會發生此錯誤。 此套件已被取代;必須移除參考,且必須卸載 SelfHost 套件的 1.x 版本。

中樞方法以無訊息方式失敗

確認用戶端中的腳本參考是最新的,而且 OwinStartup Startup 類別的 屬性具有您專案的正確類別和元件名稱。 此外,請嘗試在瀏覽器中開啟中樞位址 (/signalr/hubs) ;出現的任何錯誤都會提供有關發生錯誤的詳細資訊。