將 SignalR 1.x 專案升級到版本 2
警告
本檔不適用於最新版的 SignalR。 看看ASP.NET Core SignalR。
本主題描述如何將現有的 SignalR 1.x 專案升級至 SignalR 2.x,以及如何針對升級程式期間可能發生的問題進行疑難排解。
教學課程中使用的軟體版本
- Visual Studio 2013
- .NET 4.5
- SignalR 1 和 2 版
搭配本教學課程使用 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。
完成開始使用教學課程之後,請以滑鼠右鍵按一下專案,然後選取 [ 屬性]。 確認目標架構已設定為.NET Framework 4.5。
開啟套件管理員主控台。 使用下列命令從專案中移除 SignalR 1.x:
Uninstall-Package Microsoft.AspNet.SignalR -RemoveDependencies
使用下列命令安裝 SignalR 2:
Install-Package Microsoft.AspNet.SignalR
在 HTML 頁面中,更新 SignalR 的腳本參考,以符合專案中現在包含的腳本版本。
<!--Reference the SignalR library. --> <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
在全域應用程式類別中,移除 MapHubs 的呼叫。
protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapHubs(); }
以滑鼠右鍵按一下方案,然後選取 [ 新增]、[ 新增專案...]。在對話方塊中,選取 [Owin 啟動類別]。 將新類別命名為 Startup.cs。
以下列程式碼取代 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 中樞建立路由。執行專案,並將主頁面的 URL 複製到另一個瀏覽器或瀏覽器窗格,如同先前一樣。 每個頁面都會要求使用者名稱,而且每個頁面所傳送的訊息應該會顯示在這兩個瀏覽器窗格中。
針對升級期間遇到的錯誤進行疑難排解
本節說明升級期間可能發生的問題。 如需 SignalR 應用程式可能發生之錯誤和問題的完整清單,請參閱 SignalR 疑難排解。
「下列方法或屬性之間的呼叫模棱兩可」
如果未移除 的 Microsoft.AspNet.SignalR.Owin
參考,就會發生此錯誤。 此套件已被取代;必須移除參考,且必須卸載 SelfHost 套件的 1.x 版本。
中樞方法以無訊息方式失敗
確認用戶端中的腳本參考是最新的,而且 OwinStartup
Startup 類別的 屬性具有您專案的正確類別和元件名稱。 此外,請嘗試在瀏覽器中開啟中樞位址 (/signalr/hubs) ;出現的任何錯誤都會提供有關發生錯誤的詳細資訊。