練習 - 在 Azure 應用程式組態實例中實作組態設定

已完成

應用程式的新需求現在表示允許功能旗標控制產品的折扣。 這個練習會告訴你如何做到這一點。

  • 將組態設定新增至 Azure 應用程式組態實例。
  • 新增程式代碼以使用新的設定來折扣產品價格。
  • 建置及測試應用程式。

將組態設定新增至應用程式組態存放區

在 Azure 應用程式組態中,現在建立新的索引鍵/值組來儲存銷售折扣百分比。 完成下列步驟:

  1. 在另一個瀏覽器索引標籤中,使用與 Azure CLI 相同的帳戶和目錄登入 Azure 入口網站。
  2. 使用搜尋方塊來尋找並開啟前面加上 eshop-app-features的應用程式組態資源。
  3. 在 [ 作業] 區段中,選取 [ 組態總管]。
  4. 在頂端功能表中,選取 + 建立,然後選取 鍵值
  5. 在 [ 金鑰 ] 文字框中,輸入 eShopLite__Store__DiscountPercent
  6. 在 [ 值] 文本框中,輸入 0.8
  7. 選擇 套用

新增程式代碼以使用新的組態設定

必須更新產品頁面,才能使用新的組態設定。 完成下列步驟:

  1. 在 Visual Studio Code 中,開啟 Store/Components/Pages/Products.razor 檔案。

  2. 在區 @code 段中,新增下列變數來儲存功能旗標的狀態:

    private decimal discountPercentage;  
    
  3. 在方法中 OnInitializedAsync ,新增下列程式代碼以擷取組態設定的值:

    if (saleOn) {
      discountPercentage = Convert.ToDecimal(Configuration.GetSection("eShopLite__Store__DiscountPercent").Value);
    }
    

    方法現在看起來應該像下列程式代碼:

    protected override async Task OnInitializedAsync()
    {
        saleOn = await FeatureManager.IsEnabledAsync("SeasonalDiscount");
    
        // Simulate asynchronous loading to demonstrate streaming rendering
        products = await ProductService.GetProducts();
    
        if (saleOn) {
          discountPercentage = Convert.ToDecimal(Configuration.GetSection("eShopLite__Store__DiscountPercent").Value);
        }
    }
    

    上述程式代碼會使用 Configuration 物件來擷取組態設定的值。 值會以十進位形式儲存在變數中 discountPercentage

顯示折扣價格

必須更新產品頁面,才能顯示折扣價格。 完成下列步驟:

  1. <td>@product.Price</td> 替換成此程式碼:

    <td>
      @if (saleOn) {
        <strike>@(product.Price)</strike><br>
        @((product.Price * discountPercentage).ToString("#.##"))
      } else {
        @product.Price
      }
    </td>
    

    上述程式代碼會檢查季節性銷售是否已啟用。 若已啟用,原價顯示時帶有刪除線,而折扣價格會顯示在其下方。 如果未啟用季節性銷售,則會顯示原始價格。

建置應用程式

  1. 請確定您已儲存所有變更,且位於 dotnet-feature-flags 目錄中。 在終端機中,執行下列命令:

    dotnet publish /p:PublishProfile=DefaultContainer 
    
  2. 使用 docker 執行應用程式:

    docker compose up
    

測試價格折扣功能

若要確認功能旗標在程式代碼空間中如預期般運作,請完成下列步驟:

  1. 切換至 [埠] 索引標籤,然後在 前端 埠的本機地址右側,選取地球圖示。 瀏覽器會在首頁開啟新的索引標籤。
  2. 選取產品

如果您在本機使用 Visual Studio Code,請開啟 http://localhost:32000/products

應用程式的螢幕快照,其中顯示折扣價格。

若要測試功能標誌是否控制季節性銷售,請完成下列步驟:

  1. 在 Azure 入口網站中,流覽至前面加上 eshop-app-features的 Azure 應用程式組態資源。

  2. 在 [ 作業] 區段中,選取 [ 功能管理員]。

  3. 選取已啟用 SeasonalDiscount 的切換,以關閉此功能。

    顯示 Azure 入口網站的應用程式組態頁面的螢幕快照。SeasonalDiscount 已停用。

  4. 在瀏覽器中,返回應用程式。

  5. 選取 [首頁 ],然後選取 [ 產品] 頁面。

    螢幕快照,顯示沒有銷售橫幅的 eShopLite 應用程式。

快取最多可能需要 30 秒的時間才能清除。 如果仍然顯示銷售橫幅,請稍候幾秒鐘,然後再次重新整理頁面。