最后來看一看 Program.cs 這個文件中有哪些內容。
Program.cs 是整個Web應用程序的入口文件,.NET6 之前有一個入口函數 Main() , NET6中去掉了 ,其中的代碼沒有任何函數定義,
打開就可以開干了,這里的語句就是頂級語句, 代碼非常簡潔,如下:

關於頂級語句可以參考微軟官網的介紹:
https://docs.microsoft.com/zh-cn/dotnet/csharp/fundamentals/program-structure/top-level-statements,
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/proposals/csharp-9.0/top-level-statements,
摘錄如下:

頂級語句在編譯過后會生成 Program 類和 Main() 方法(名稱不是固定的),方法的簽名根據語句的不同而有差異,具體如下:

下面介紹一下各條語句的作用:
第1行, var builder = WebApplication.CreateBuilder(args); WebApplication 表示整個Web應用程序 ,調用CreateBuilder()方法創建一個
WebApplicationBuilder 對象。
第4行,builder.Services.AddRazorPages(); WebApplicationBuilder 對象添加 RazorPages 服務 , 也可以添加其他服務,比如依賴注入、
登錄等。
第6行,var app = builder.Build();構造一個 WebApplication 實例。
第12~15行,添加一個異常處理中間件,此中間件發生作用的條件是:當前運行環境必須是開發環境 ,如果 Web 應用程序出現異常,
則跳轉到 Error.cshtml 這個頁面,如下圖,微軟已經很貼心的幫我們把異常頁都准備好了。
if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); }

第17行,app.UseStaticFiles(); 啟用靜態文件中間件,加上這行代碼后, 我們在瀏覽器中才能訪問 wwwroot 目錄下的文件,否則會報錯。
我們先在解決方案的 wwwroot目錄增加一個圖片文件如下:

在瀏覽器中訪問此圖片如下:

去掉 app.UseStaticFiles(); 再訪問是這樣的:

同樣的道理,如果我們在項目中需要把某些文件放在新的目錄中,需要在 Program.cs 中啟用相應的中間件才行,
具體怎么做我們想后續的演示中碰到了再展開。
第19行 ,app.UseRouting(); 啟用路由中間件,啟用后在瀏覽器中輸入網址 Web應用才能正確解析。
第21行,app.UseAuthorization(); 啟用權限驗證中間件,當我們的網站是基於身份認證的話需要用到,
一般購物網站都需要啟用,如果只是純展示性的比如企業官網等可以去掉。
第23行,app.MapRazorPages(); 啟用Razor Pages中間件,如果是MVC應用,則使用 app.UseMvc(); 中間件。
第25行,app.Run(); 啟動應用,當我們開始執行WebApp , 瀏覽器就會幫我們打開網站 Index 頁面了,
如果去掉這一行,報錯如下:沒有與此對象關聯的進程。

Web應用程序已經無法運行了。
