快速入門:使用 ASP.NET 和 SignalR 服務建立聊天室

Azure SignalR 服務是以 SignalR for ASP.NET Core 2.1 為基礎,與 ASP.NET SignalR 不相容 100%。 Azure SignalR Service 會根據最新的 ASP.NET Core 技術重新實作 ASP.NET SignalR 數據通訊協定。 當您針對 ASP.NET SignalR 使用 Azure SignalR 服務時,不再支援某些 ASP.NET SignalR 功能,例如,當用戶端重新連線時,Azure SignalR 不會重新執行訊息。 此外,不支持永遠框架傳輸和 JSONP。 需要某些程式代碼變更和適當的相依連結庫版本,才能讓 ASP.NET SignalR 應用程式與 SignalR Service 搭配運作。

如需 ASP.NET SignalR 與 ASP.NET Core SignalR 之間的功能比較完整清單,請參閱版本差異檔

在本快速入門中,您將瞭解如何開始使用類似 聊天室應用程式的 ASP.NET 和 Azure SignalR 服務。

如果您沒有 Azure 訂用帳戶,請在開始之前建立 免費帳戶

必要條件

發生問題嗎? 請嘗試疑難解答指南,或讓我們知道

登入 Azure

使用您的 Azure 帳戶登入 Azure 入口網站

發生問題嗎? 請嘗試疑難解答指南,或讓我們知道

在本節中,您會建立要用於應用程式的基本 Azure SignalR 實例。 下列步驟會使用 Azure 入口網站 來建立新的實例,但您也可以使用 Azure CLI。 如需詳細資訊,請參閱 Azure SignalR Service CLI 參考中的 az signalr create 命令。

  1. 登入 Azure 入口網站
  2. 在頁面左上角,選取 [+ 建立資源]。
  3. 在 [建立資源] 頁面上的 [搜尋服務 和市集] 文本框中,輸入 signalr,然後從列表中選取 SignalR 服務
  4. 在 [ SignalR 服務] 頁面上,選取 [ 建立]。
  5. 在 [ 基本] 索引 標籤上,輸入新 SignalR Service 實例的基本資訊。 輸入下列值:
欄位 建議的值 描述
訂用帳戶 選擇您的訂用帳戶 選取您想要用來建立新 SignalR Service 實例的訂用帳戶。
資源群組 建立名為 SignalRTestResources 的資源群組 選取或建立 SignalR 資源的資源群組。 為本教學課程建立新的資源群組,而不是使用現有的資源群組會很有用。 若要在完成本教學課程之後釋放資源,請刪除資源群組。

刪除資源群組也會刪除屬於群組的所有資源。 此動作無法復原。 刪除資源群組之前,請確定它不包含您想要保留的資源。

如需詳細資訊,請參閱 使用資源群組來管理您的 Azure 資源
資源名稱 testsignalr 輸入要用於 SignalR 資源的唯一資源名稱。 如果您的 區域中已經採用testignalr ,請新增數位或字元,直到名稱是唯一的。

名稱必須是 1 到 63 個字元的字串,且只包含數位、字母和連字元 (-) 字元。 名稱不能以連字元字元開頭或結尾,且連續連字元字元無效。
區域 選擇您的區域 為新的 SignalR 服務實例選取適當的區域。

Azure SignalR Service 目前無法在所有區域中使用。 如需詳細資訊,請參閱 Azure SignalR 服務區域可用性
定價層 選取 [變更],然後選擇 [免費](僅限開發/測試)。 選擇 [ 選取 ] 以確認您選擇的定價層。 Azure SignalR Service 有三個定價層:免費、標準和 進階版。 除非必要條件另有說明,否則教學課程會使用 免費 層。

如需階層與定價之間功能差異的詳細資訊,請參閱 Azure SignalR 服務定價
服務模式 選擇適當的服務模式 當您在 Web 應用程式中裝載 SignalR 中樞邏輯,並使用 SignalR 服務作為 Proxy 時,請使用預設值。 當您使用無伺服器技術,例如 Azure Functions 來裝載 SignalR 中樞邏輯時,請使用 伺服器。

傳統 模式僅供回溯相容性使用,不建議使用。

如需詳細資訊,請參閱 Azure SignalR Service 中的服務模式。

您不需要變更 SignalR 教學課程之 [網络標籤 ] 索引標籤上的設定。

  1. 選取 [基本] 索引標籤底部的 [檢閱 + 建立] 按鈕。
  2. 在 [ 檢閱 + 建立] 索引卷標上,檢閱值,然後選取 [ 建立]。 部署需要一些時間才能完成。
  3. 部署完成時,選取 [移至資源 ] 按鈕。
  4. 在 [SignalR 資源] 頁面上,從左側功能表中選取 [密鑰],在 [設定]。
  5. 複製主鍵的 連線 字串。 在本教學課程稍後,您需要此 連接字串 來設定您的應用程式。

ASP.NET SignalR 應用程式不支援無 伺服器模式。 一律針對 Azure SignalR Service 實例使用 預設傳統

您也可以使用 建立 SignalR 服務腳本,建立本快速入門中使用的 Azure 資源。

發生問題嗎? 請嘗試疑難解答指南,或讓我們知道

複製範例應用程式

在部署服務時,讓我們切換為使用程序代碼。 從 GitHub 複製範例應用程式、設定 SignalR Service 連接字串,並在本機執行應用程式。

  1. 開啟 Git 終端機視窗。 變更為您要複製範例項目的資料夾。

  2. 執行下列命令以複製範例存放庫。 此命令會在您的電腦上建立範例應用程式的複本。

    git clone https://github.com/aspnet/AzureSignalR-samples.git
    

發生問題嗎? 請嘗試疑難解答指南,或讓我們知道

設定及執行聊天室 Web 應用程式

  1. 啟動 Visual Studio,並在複製存放庫的 aspnet-samples/ChatRoom/ 資料夾中開啟方案

  2. 在開啟 Azure 入口網站 的瀏覽器中,尋找並選取您所建立的實例。

  3. 選取 [金鑰] 以檢視 SignalR 服務實例的 連接字串。

  4. 選取並複製主要 連接字串。

  5. 現在,在 web.config 檔案中設定 連接字串。

    <configuration>
    <connectionStrings>
        <add name="Azure:SignalR:ConnectionString" connectionString="<Replace By Your Connection String>"/>
    </connectionStrings>
    ...
    </configuration>
    
  6. Startup.cs 中,MapSignalR()您需要呼叫 MapAzureSignalR({YourApplicationName}) 並傳入 連接字串,讓應用程式連線到服務,而不是自行裝載 SignalR。 將取代 {YourApplicationName} 為應用程式的名稱。 此名稱是唯一的名稱,可區分此應用程式與其他應用程式。 您可以使用 this.GetType().FullName 作為值。

    public void Configuration(IAppBuilder app)
    {
        // Any connection or hub wire up and configuration should go here
        app.MapAzureSignalR(this.GetType().FullName);
    }
    

    您也需要在使用這些 API 之前參考服務 SDK。 開啟工具 |NuGet 封裝管理員 |封裝管理員 主控台並執行命令:

    Install-Package Microsoft.Azure.SignalR.AspNet
    

    除了這些變更之外,其他所有專案都保持不變,您仍然可以使用您已經熟悉的中樞介面來撰寫商業規則。

    注意

    在實作中,端點 /signalr/negotiate 會公開供 Azure SignalR Service SDK 交涉。 當客戶端嘗試連線並將用戶端重新導向至 連接字串 中定義的服務端點時,它會傳回特殊的交涉回應。

  7. F5 以偵錯模式執行專案。 您可以看到應用程式在本機執行。 它現在會連線到 Azure SignalR 服務,而不是依應用程式本身裝載 SignalR 運行時間。

發生問題嗎? 請嘗試疑難解答指南,或讓我們知道

清除資源

如果您不打算繼續使用此應用程式,請使用下列步驟刪除本快速入門所建立的所有資源,因此不會產生任何費用:

  1. 在 Azure 入口網站中選取最左側的 [資源群組],然後選取您所建立的資源群組。 或者,您可以使用搜尋方塊依其名稱尋找資源群組。

  2. 在開啟的視窗中,選取資源群組,然後按兩下 [ 刪除資源群組]。

  3. 在新視窗中輸入要刪除之資源群組的名稱,然後按一下 [刪除]

重要

刪除資源群組是無法復原的,而且資源群組及其中的所有資源都會永久刪除。 請確定您不會不小心刪除錯誤的資源群組或資源。 如果您已建立資源,以將這個範例裝載於包含您想要保留之資源的現有資源群組內,則可以從各自的刀鋒視窗中個別刪除每個資源,而不是刪除資源群組。

登入 Azure 入口網站,然後選取 [資源群組]。

在 [ 依名稱篩選... ] 文本框中,輸入資源群組的名稱。 本快速入門的指示使用了名為 SignalRTestResources 的資源群組。 在結果清單中的資源群組上,按兩下 [...],然後刪除資源群組

Delete

幾分鐘后,資源群組及其所有自主資源都會被刪除。

發生問題嗎? 請嘗試疑難解答指南,或讓我們知道

下一步

在本快速入門中,您已建立新的 Azure SignalR Service 資源,並將其與 ASP.NET Web 應用程式搭配使用。 接下來,瞭解如何使用 Azure SignalR Service 搭配 ASP.NET Core 開發即時應用程式。