練習 - 使用內建中介軟體
ASP.NET Core 包含一組內建的中介軟體元件,這些元件可處理路由傳送、驗證和 HTTP 記錄等常見工作。 您可以使用這些元件來為應用程式新增功能,而不必撰寫自訂的中介軟體。
小組負責人請您建立公司的裸機網站。 該網站應該在主頁面上顯示歡迎訊息,並在個別的 /about 頁面上顯示公司簡史。 舊版應用程式的公司歷史位於 /history URL,因此您必須將要求從 /history 重新導向至 /about,以便與現有連結保持相容。
您將使用內建的 MapGet 方法和 UrlRewriter 中介軟體來完成這些工作。
建立 ASP.NET Core 應用程式
您需要 ASP.NET Core 應用程式來扮演小組應用程式的角色。 讓我們在 Visual Studio Code 中使用 C# 開發套件延伸模組建立新的 ASP.NET Core 應用程式。
啟動 Visual Studio Code。
按 Ctrl+Shift+P 以開啟命令選擇區。
搜尋並選取 [.NET:新增專案...]。
搜尋並選取 [ASP.NET Core Empty]。
選取或建立新專案的資料夾。
將新的應用程式命名為「MyWebApp」。
選取 [建立專案] 以建立專案。
當新專案開啟時,展開 [
Solution Explorer] 窗格以檢視專案檔。
執行應用程式
測試應用程式以確定其可執行。
在 Visual Studio Code 中,按 F5 建置並執行應用程式。
- 出現提示時,選取 [C#] 作為偵錯工具。
- 出現提示時,選取 [C#: MyWebApp [預設設定]] 作為要使用的啟動設定。
此命令會啟動應用程式,並將其裝載在本機網頁伺服器上。 瀏覽器視窗隨即開啟並顯示「Hello, World!」
在 Visual Studio Code 中按 Shift+F5 以關閉瀏覽器視窗並停止應用程式。
對應端點並新增 URL 重寫器
現在您已擁有可正常運作的應用程式了,接下來讓我們在主頁面中新增歡迎訊息。
開啟 Program.cs 檔案。
在
app.MapGet("/", () => "Hello World!");行上,將「Hello World!」訊息變更為「Welcome to Contoso!」app.MapGet("/", () => "Welcome to Contoso!");app.MapGet()會將 HTTP GET 要求對應至指定的路徑。 ASP.NET Core 的這項功能稱為 端點路由。 此程式碼會在管線中新增分支。 如果要求路徑為/,則端點路由中介軟體會將要求路由傳送至此端點,然後將「Welcome to Contoso!」寫入到回應中。在下一行上,新增下列程式碼:
app.MapGet("/about", () => "Contoso was founded in 2000.");此程式碼會新增另一個端點。 如果要求路徑為
/about,此端點會將「Our company was founded in 2000.」寫入到回應中。在第一個
app.MapGet(),新增下列程式碼:app.UseRewriter(new RewriteOptions().AddRedirect("history", "about"));此程式碼會新增 URL 重寫器中介軟體元件,以將要求從
/history重新導向至/about。AddRedirect()方法採用兩個參數:用來比對要求路徑的規則運算式模式,以及要作為重新導向目的地的取代路徑。將下列指示詞新增至檔案的頂端:
using Microsoft.AspNetCore.Rewrite;這個指示詞會解析
RewriteOptions類別的參考。
測試變更
- 儲存所有變更,並和之前一樣地執行應用程式。
- 當瀏覽器視窗開啟時,請注意根 URL 會顯示「歡迎使用 Contoso!將 新增
/about至 URL,然後按 Enter。 瀏覽器應該會顯示「Contoso was founded in 2000.」 - 將 URL 中的
/about替換為/history,然後按 Enter 鍵。 瀏覽器應該會重新導向至/about。 - 讓應用程式保持執行以便進行下一個練習。
![已選取 [ASP.NET Core Empty] 之命令選擇區的螢幕擷取畫面。](../../aspnetcore/aspnetcore-middleware/media/aspnet-core-empty.png)