將 SignalR 1.x 專案升級至 2 版

作者 :P atrick Fletcher

警告

本檔不適用於最新版本的 SignalR。 看看 ASP.NET Core SignalR。

本主題說明如何將現有的 SignalR 1.x 專案升級至 SignalR 2.x,以及如何在升級過程中排除可能出現的問題。

教學中使用的軟體版本

使用 Visual Studio 2012 搭配這個教學

要使用 Visual Studio 2012 搭配此教學,請執行以下步驟:

  • 將你的 套件管理器 更新到最新版本。
  • 安裝 網頁平台安裝程式。
  • 在網頁平台安裝程式中,搜尋並安裝 Visual Studio 2012 的 ASP.NET 和 Web Tools 2013.1。 這會安裝 Visual Studio 的 SignalR 類別範本,例如 Hub。
  • 部分範本(如 OWIN Startup Class)將無法提供;對於這些,請使用類別檔案。

問題與評論

請在頁面底部留言,分享你對這個教學的滿意度以及我們可以改進的地方。 如果你有與教學無直接關聯的問題,可以發問到 ASP.NET SignalR 論壇 或 StackOverflow.com。

SignalR 2 透過 OWIN 提供跨伺服器平台的一致開發體驗。 本文說明將 SignalR 1.x 應用程式更新為版本 2 所需的幾個步驟。

雖然鼓勵將應用程式升級至 SignalR 2,但仍支援 SignalR 1.x。

本教學說明如何將網頁託管應用程式升級至 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 Class。 給新班級命名 Startup.cs。

    顯示新增物品對話框的截圖。選擇了 OWIN 新創類別,Startup dot 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. 執行專案,然後像之前一樣將主頁的網址複製到另一個瀏覽器或視窗。 每個頁面都會要求輸入使用者名稱,且從每個頁面發送的訊息應該會在兩個瀏覽器的窗格中顯示。

升級過程中遇到的故障排除錯誤

本節描述升級過程中可能出現的問題。 欲了解 SignalR 應用程式可能發生的更完整錯誤與問題清單,請參閱 SignalR 故障排除。

「呼叫在以下方法或屬性之間存在歧義」

若未移除Microsoft.AspNet.SignalR.Owin 參考,將發生此錯誤。 此套件已被棄用;必須移除該參考,且必須卸載 SelfHost 套件的 1.x 版本。

集線器方法會無聲地失效

確認你客戶端的腳本參考是最新的,且你的 Startup 類別屬性是否 OwinStartup 符合你的專案類別和組合語言名稱。 另外,試著在瀏覽器中開啟集線器的地址(/signalr/hubs);任何出現的錯誤都會提供更多關於問題所在的資訊。