Note
這不是這篇文章的最新版本。 關於目前版本,請參閱 本文的 .NET 10 版本。
Warning
不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支持原則。 關於目前版本,請參閱 本文的 .NET 10 版本。
本文概述了建置 ASP.NET Core 應用程式的基本原理,包括相依注入(DI)、設定與中介軟體。
如需 Blazor 基本概念指引,這會新增或取代本文中的指導方針,請參閱 ASP.NET Core Blazor 基本概念。
該Program檔案
從該框架的專案範本建立的 ASP.NET Core 應用程式,在 Program 檔案(Program.cs)中包含啟動程式碼。
Program 檔案位於下列位置:
- 已設定應用程式所需的服務。
- 應用程式的要求處理管線定義為一系列的 中間件元件。
以下應用程式啟動程式碼支援兩種應用程式類型:
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Blazor (Razor components)
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
// Build the app
var app = builder.Build();
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Map static assets endpoints
app.MapStaticAssets();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Add endpoints for Blazor
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// Run the app
app.Run();
Note
透過檔案中的Program額外設定,ASP.NET Core 應用程式可支援 Razor Pages、MVC 及帶有控制器的網頁 API。
以下應用程式啟動程式碼支援兩種應用程式類型:
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Blazor (Razor components)
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
// Build the app
var app = builder.Build();
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Add antiforgery middleware
app.UseAntiforgery();
// Map static assets endpoints
app.MapStaticAssets();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Add endpoints for Blazor
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// Run the app
app.Run();
Note
透過檔案中的Program額外設定,ASP.NET Core 應用程式可支援 Razor Pages、MVC 及帶有控制器的網頁 API。
下列應用程式啟動程式代碼支援數種應用程式類型:
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Blazor (Razor components), Razor Pages, and MVC
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
// Build the app
var app = builder.Build();
// Configure the HTTP request pipeline
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Use static files middleware to serve static assets
app.UseStaticFiles();
// Use authorization middleware
app.UseAuthorization();
// Add antiforgery middleware
app.UseAntiforgery();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Configures the standard conventional route for MVC
app.MapDefaultControllerRoute();
// Add endpoints for Razor Pages
app.MapRazorPages();
// Add endpoints for Blazor
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// Run the app
app.Run();
下列應用程式啟動程式碼支援:
// Initialize a new instance of the WebApplicationBuilder class
// with preconfigured defaults
var builder = WebApplication.CreateBuilder(args);
// Add services for Razor Pages and MVC
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
// Build the app
var app = builder.Build();
// Configure the HTTP request pipeline
// Use exception-handling middleware and HSTS middleware
// when in the Development environment
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// Use HTTPS redirection middleware to automatically
// redirect requests from HTTP to HTTPS
app.UseHttpsRedirection();
// Use static files middleware to serve static assets
app.UseStaticFiles();
// Use authorization middleware
app.UseAuthorization();
// Map a Minimal API endpoint for requests to '/hi'
app.MapGet("/hi", () => "Hello!");
// Configures the standard conventional route for MVC
app.MapDefaultControllerRoute();
// Add endpoints for Razor Pages
app.MapRazorPages();
// Run the app
app.Run();
Startup 類別
Startup 類別(Startup.cs)如下:
- 應用程式所需的服務會在
ConfigureServices方法中設定。 - 應用程式的請求處理管線在此方法中
Configure定義為一系列 中介軟體元件。
下列應用程式啟動程式碼支援:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
});
}
}
欲了解更多資訊,請參閱 ASP.NET Core 中的應用程式啟動及 ASP.NET Core Blazor 啟動。
依賴注入 (服務)
ASP.NET Core 內建依賴注入(DI),可讓已設定的服務在整個應用程式中皆可使用,以實現控制反轉(IoC)。
當透過呼叫 WebApplicationBuilder 來實例化 WebApplication.CreateBuilder 時,系統會自動新增 架構提供的服務,例如組態和記錄服務:
var builder = WebApplication.CreateBuilder(args);
使用 WebApplicationBuilder.Services 將附加服務加入 DI 容器。 以下範例會註冊 Blazor 服務:
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddServerSideBlazor();
DI 框架在執行時提供請求服務的實例。 在應用程式中Blazor,服務通常在執行時透過@inject元件檔案.razor中的Razor指令()從 DI 解析。 在以下範例中,元件利用 NavigationManager 抽象取得導航管理器的實例,該管理器用於查詢和管理 URI 導航,並在按鈕被選中時導向產品頁面 /products :
@inject NavigationManager Navigation
<button @onclick="NavigateToProductList">
Products
</button>
@code {
private void NavigateToProductList()
{
Navigation.NavigateTo("/products");
}
}
另一種解析 DI 服務的方法是使用建構子注入。 在以下範例中, 主要建構子(C# 12 或更新版本) 會將型別 AppDbContext 和 ILogger<OrderProcessor> 的參數解析為執行時 context 的 and logger 變數(資料庫實例與日誌抽象)。 資料庫內容項目執行個體用於處理資料庫中 false 欄位為 IsProcessed 的所有訂單,並使用記錄器執行個體將每筆已處理的訂單以資訊層級記錄其訂單 ID(OrderId):
public class OrderProcessor(AppDbContext context, ILogger<OrderProcessor> logger)
{
public async Task ProcessPendingOrdersAsync()
{
var orders = await context.Orders
.Where(o => !o.IsProcessed)
.ToListAsync();
foreach (var order in orders)
{
order.IsProcessed = true;
logger.LogInformation("Processed order ID {OrderId}.", order.Id);
}
await context.SaveChangesAsync();
}
}
你也可以直接在 Minimal API 端點的 lambda 參數中注入相依關係。 在下列範例中,會從 /todos 端點回傳一份待辦事項清單。 用於 ILogger<Program> 的 logger 執行個體會記錄資訊,而用於 AppDbContext 的資料庫執行個體則用來從資料庫取得待辦事項清單,以納入回應:
app.MapGet("/todos", async (AppDbContext context, ILogger<Program> logger) =>
{
logger.LogInformation("Fetching todos using inline handler injection.");
var todos = await context.Todos.ToListAsync();
return Results.Ok(todos);
});
當在 Host.CreateDefaultBuilder 檔案中呼叫 Program 時,系統會自動以 框架提供的服務(例如組態和記錄服務)初始化 HostBuilder 類別的新執行個體:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
額外服務是在 IServiceCollection 方法(Startup.ConfigureServices)中加入至 DI 容器的服務集合(Startup.cs)。 以下範例用於暫存 MVC 與 Razor Pages 服務:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();
}
通常會使用建構函式插入從 DI 解析服務。 類別會使用建構函式插入來宣告必要類型或介面的建構函式參數。 DI 框架在執行時提供服務的實例。
如果內建的 DI 容器不符合你的需求,也可以使用第三方的 IoC 容器。
欲了解更多資訊,請參閱 ASP.NET Core 中的相依注入及 ASP.NET Core Blazor 相依注入。
Environments
ASP.NET Core 提供執行環境,例如:
-
Development當應用程式還在本地開發時。 -
Staging:當應用程式準備部署時。 -
Production:當用戶的即時應用程式正在運行時。
透過設定 ASPNETCORE_ENVIRONMENT 應用程式運行的主機上的環境變數來指定應用程式運行的環境。 ASP.NET Core 在應用程式啟動時讀取環境變數,並儲存該值以控制應用程式周圍的程式碼執行。
開發者程式碼可以針對特定環境進行檢查。 以下 Program 檔案範例中,執行區塊中的程式碼只有在應用程式未在環境中執行 Development 時才會執行:
if (!app.Environment.IsDevelopment())
{
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (!env.IsDevelopment())
{
...
}
...
}
欲了解更多資訊,請參閱 ASP.NET Core 執行環境及 ASP.NET Core Blazor 環境。
Middleware
要求處理管線由一系列中介軟體元件所組成。 每個元件會在 HttpContext 上執行操作,並叫用管線中下一個中介軟體或終止要求。
依慣例,中介軟體元件是透過呼叫以「Use.」開頭的擴充方法來加入管線。以下代表請求處理管線部分的範例中,會呼叫用於例外處理的中介軟體(UseExceptionHandler)、 HTTP 嚴格傳輸安全(HSTS)協定 ()、UseHsts以及 HTTPS 重定向(UseHttpsRedirection)。 其中有兩個中介軟體只會在應用程式未於本機開發的 Development 環境中執行時觸發,例如當應用程式處於預備部署(Staging 環境)或正式生產(Production 環境)時:
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
app.UseHsts();
}
app.UseHttpsRedirection();
if (env.IsDevelopment())
{
...
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
ASP.NET Core 內含一組豐富的內建中介軟體。 你也可以建立自訂的中介軟體元件,以符合應用程式的特殊請求處理規格。 更多資訊請參閱 ASP.NET Core 中介軟體。
Host
啟動時,ASP.NET Core 應用程式會建置 主機。 宿主會整合應用程式的所有資源,例如:
- HTTP 伺服器實作
- 中介軟體元件
- Logging
- 依賴注入服務
- Configuration
有三個不同的主機能夠執行 ASP.NET Core 應用程式:
建議使用 ASP.NET Core WebApplication 及其WebApplicationBuilder類型,並用於所有 ASP.NET Core 專案範本中。
WebApplication 的行為類似於 .NET 泛型主機,並公開許多相同的介面,但需要較少的回呼才能設定。 ASP.NET Core WebHost 僅提供向下相容性。
下列範例會具現化 WebApplication,並將它指派給名為 app的變數:
var builder = WebApplication.CreateBuilder(args);
...
var app = builder.Build();
此 WebApplicationBuilder.Build 方法為主機配置一組預設選項,例如:
有兩位主持人:
建議使用 .NET 泛型主機。 ASP.NET Core 網頁主機僅提供向下相容性。
以下範例中的 CreateDefaultBuilder 和 ConfigureWebHostDefaults 方法會使用一組預設選項來設定主機,例如:
- 使用 Kestrel 作為 Web 伺服器,並啟用 IIS 整合。
- 從應用程式設定檔案(例如)、
appsettings.json環境變數、命令列參數及其他設定來源載入設定。 - 設定記錄,並將記錄輸出導向主控台和偵錯記錄提供者。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
如需詳細資訊,請參閱下列資源:
- .NET ASP.NET Core 中的通用主機(推薦)
- ASP.NET Core 網頁主機(向下相容)
非 Web 情境
Generic Host 使其他類型的應用程式能使用跨領域的框架擴充,例如日誌、依賴注入(DI)、設定及應用程式生命週期管理。 如需詳細資訊,請參閱 ASP.NET Core 中的 .NET 泛型主機,以及在 ASP.NET Core 中使用託管服務的背景工作。
Servers
ASP.NET Core 應用程式使用 HTTP 伺服器實作來接聽 HTTP 要求。 伺服器會將對應用程式的要求呈現為組成 之一組HttpContext。
如需詳細資訊,請參閱在 ASP.NET Core 中實作網頁伺服器。
Windows 作業系統
ASP.NET Core 隨附下列伺服器實作:
- Kestrel 是跨平台的網頁伺服器。 Kestrel 通常會使用 IIS 在反向 Proxy 設定中執行。 在 ASP.NET Core 2.0 或更新版本中,Kestrel 可以做為直接向網際網路公開的公眾 Edge Server 執行。
- IIS HTTP 伺服器則是適用於使用 IIS Windows 的伺服器。 透過此伺服器,ASP.NET Core 應用程式及 IIS 便可以在相同處理序中執行。
- HTTP.sys 是未搭配 IIS 使用的 Windows 伺服器。
macOS 和 Linux
ASP.NET Core 提供 Kestrel 跨平台伺服器實作。 在 ASP.NET Core 2.0 或更新版本中,Kestrel 可以做為直接向網際網路公開的公眾 Edge Server 執行。 Kestrel 通常會使用 Nginx 或 Apache 在反向 Proxy 設定中執行。
Configuration
ASP.NET Core 提供一個設定框架,能從有序的組態提供者集合中取得設定,作為名稱與值對。 內建的設定提供者可用於多種來源,例如 JSON 檔案(.json)、XML 檔案(.xml)、環境變數及命令列參數。 你可以建立自訂的設定提供者來支援其他來源。
預設情況下,ASP.NET Core 應用程式會設定從應用程式設定檔案(例如 appsettings.json)、環境變數及命令列讀取。
當應用程式設定被載入時,環境變數的值會覆蓋應用程式設定檔案的數值。 選項 API 可用於讀取相關的設定值。
為了管理環境中的機密設定資料,例如密碼, Development .NET 提供了 秘密管理器(Secret Manager)。 對於生產機密,我們建議使用 Azure Key Vault。
如需詳細資訊,請參閱下列資源:
Logging
ASP.NET Core 支援一個可與多種日誌提供者協作的日誌 API:
- Console
- Debug
- Windows 上的事件追蹤
- Windows 事件記錄檔
- TraceSource
- Azure App 服務
- Azure 應用程式深入解析
- 第三方提供者
要建立日誌,請從依賴注入(DI)解析 ILogger<TCategoryName> 服務,並呼叫日誌方法,例如 LogInformation。 當 WebApplication.CreateBuilder 呼叫該方法時,日誌物件與該日誌物件的主控台提供者會自動儲存在 DI 容器中。
以下範例展示了如何從 DI 取得日誌實例,並將其用於Weather應用程式中報告天氣資料的元件(Weather.razor):Blazor
@inject ILogger<Weather> Logger
...
@code {
protected override async Task OnInitializedAsync()
{
Logger.LogInformation("OnInitializedAsync method called!");
...
}
}
欲了解更多資訊,包括頁面Razor與 MVC 應用程式的路由指引,請參閱 .NET 與 ASP.NET Core 的登入,以及 ASP.NET Core Blazor 的日誌記錄。
Routing
ASP.NET Core 中的路由是一種將輸入請求映射到應用程式中特定端點的機制。 它可讓您定義對應至不同元件的 URL 模式,例如 Razor 元件、Razor 頁面、MVC 控制器動作或中間件。
UseRouting 方法會將路由中間件新增至要求管線。 此中間件會處理路由資訊,並判斷每個要求的適當端點。 在使用 Minimal Host 的應用程式中, UseRouting 除非你想改變中介軟體的處理順序,否則開發者程式碼中不會明確呼叫這個功能。
如需詳細資訊,請參閱下列資源:
處理錯誤
ASP.NET Core 具有處理錯誤的內建功能,例如:
- 開發人員例外狀況頁面
- 自訂錯誤頁面
- 靜態狀態碼頁面
- 啟動例外狀況處理
更多資訊請參閱「處理 ASP.NET Core 錯誤」及「處理 ASP.NET Core Blazor 應用程式中的錯誤」。
發出 HTTP 要求
IHttpClientFactory 的實作可用於建立 HttpClient 執行個體。 工廠:
- 提供一個集中位置,用於命名和設定邏輯
HttpClient執行個體。 例如,大部分應用程式的資料請求都依賴預設客戶端,搭配網頁 API,然後註冊一個不同設定的客戶端來存取 GitHub。 - 支援註冊及串接多個委派處理常式,以建置用於處理傳出請求的中介軟體管線。 此模式與 ASP.NET Core 的輸入中介軟體管線相似。 模式提供一個機制來管理 HTTP 要求的跨領域關注,包括快取、錯誤處理、序列化和記錄。
- 與 Polly 整合,這是用於短暫性錯誤處理的熱門第三方程式庫。
- 管理底層 HttpClientHandler 執行個體的資源池化和生命週期,以避免手動管理
HttpClient生命週期時常見的 DNS 問題。 - 針對透過工廠所建立的用戶端所傳送的所有請求,新增可配置的日誌體驗 (透過 ILogger)。
欲了解更多資訊,請參閱使用 IHttpClientFactory - ASP.NET Core 的 HTTP 請求,以及從 ASP.NET Core Blazor 應用程式呼叫網頁 API。
內容根目錄
內容根目錄是下列項目的基底路徑:
- 裝載該應用程式的可執行檔(
.exe)。 - 組成應用程式的已編譯組件(
.dll)。 - 應用程式使用的內容檔案,例如 Razor 檔案(
.cshtml,.razor)、設定檔(.json,.xml) 和資料檔案(.db)。 -
網站根目錄,通常是
wwwroot資料夾。
在開發期間,內容根目錄預設為專案的根目錄。 此目錄也是應用程式內容檔案和 Web 根目錄的基底路徑。 在建置 主機時,透過設定路徑來指定不同的內容根節點。
欲了解更多資訊,請參閱 ASP.NET Core 中的 .NET 通用主機 及 在 ASP.NET Core 應用程式中提供靜態檔案。
Web 根目錄
網頁根節點是公開靜態資源檔案的基礎路徑,例如樣式表、JavaScript 檔案和圖片。
預設情況下,靜態檔案只會從網頁根目錄及其子目錄提供。 Web 根路徑預設為 {CONTENT ROOT}/wwwroot,其中 {CONTENT ROOT} 佔位元是內容根目錄。 指定不同的 Web 根目錄,方法是在建置主機時設定其路徑。 你也可以避免在應用程式的專案檔案中與專案項目一起發佈檔案wwwroot<Content>。
在 Razor.cshtml 檔案中,~/ 會指向 Web 根目錄。 開頭 ~/ 的路徑稱為 虛擬路徑。
欲了解更多資訊,請參閱 ASP.NET Core 中的 .NET 泛型主機及 在 ASP.NET Core 應用程式中提供靜態檔案。
如何下載範例
許多文章及教學課程都有包含範例程式碼的連結。
- 下載 ASP.NET 存放庫 zip 檔案。
- 將
AspNetCore.Docs-main.zip檔案解壓縮。 - 若要存取已解壓縮存放庫中的文章範例應用程式,請使用文章範例連結中的 URL 來協助您導覽至範例的資料夾。 通常,文章的範例連結會出現在文章頂端,其中包含連結文字 檢視或下載範例程序代碼。
若要取得單一範例應用程式且僅取得其最後一次提交,請使用 git sparse-checkout。
在以下範例 Blazor GitHub 倉庫範例中,指令git sparse-checkout set指定範例資料夾的路徑:
- 將
{VERSION FOLDER}預留位置替換為版本資料夾。 - 以範例資料夾取代
{SAMPLE FOLDER}預留位置。
在指令殼中,導向你想要複製樣本的資料夾。 在指令殼中執行以下指令,將版本/範例資料夾路徑傳遞給該 git sparse-checkout set 指令:
git clone --depth 1 --filter=blob:none https://github.com/dotnet/blazor-samples.git --sparse
cd blazor-samples
git sparse-checkout init --cone
git sparse-checkout set {VERSION FOLDER}/{SAMPLE FOLDER}
以下 PowerShell 範例取得 10.0 Blazor Web App 範例,並依據 PowerShell ~/documents 的 change directorycd () 指令路徑將其放入使用者文件資料夾:
cd "~/documents"
git clone --depth 1 --filter=blob:none https://github.com/dotnet/blazor-samples.git --sparse
cd blazor-samples
git sparse-checkout init --cone
git sparse-checkout set 10.0/BlazorSample_BlazorWebApp
範例程式碼中的前置處理器指示詞
為了示範多種案例,範例應用程式使用 #define 和 #if-#else/#elif-#endif 前置處理器指示詞,來選擇性地編譯和執行範例程式碼的不同區段。 針對利用此方式的範例,請設定 C# 檔案頂端的 #define 指示詞,以定義您想要執行之案例的相關聯符號。 部分範例會要求在多個檔案的頂端設定符號,以執行案例。
例如下列 #define 符號清單指出其提供四個情節 (每個符號一個情節)。 目前的範例設定會執行 TemplateCode 這個場景:
#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode
要更改範例以執行 ExpandDefault 情境,請定義 ExpandDefault 符號,並對其餘的符號加上註解:
#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode
如需使用 C# 預處理器指示 詞選擇性編譯程式代碼區段的詳細資訊,請參閱 #define (C# 參考) 和 #if (C# 參考) 。
範例程式代碼中的區域
某些範例應用程式包含由 #region 和 #endregion C# 指令包圍的程式碼區段。 檔建置系統會將這些區域插入轉譯的文件主題中。
區域名稱通常包含 「snippet」 一詞。下列範例顯示名為 snippet_WebHostDefaults的區域:
#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
#endregion
上述 C# 代碼段會在主題的 Markdown 檔案中使用以下行參考:
[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]
您可以放心地忽略或移除圍繞程式碼的 #region 和 #endregion 指示詞。 如果您打算執行主題中所述的範例案例,請勿改變這些指示詞內的程序代碼。
如需詳細資訊,請參閱 參與 ASP.NET 文件:程式碼範例。
文件物件模型 (DOM)
本文件集中對 文件物件模型 的參考皆使用縮寫 DOM。
欲了解更多資訊,請參閱 DOM 導論(MDN 文件)及第一級文件物件模型規範(W3C)。
位元組倍數
.NET 位元組大小使用公量前綴表示非十進位位元組倍數,基於 1024 的冪次方。
| 名稱 (縮寫) | 大小 | Example |
|---|---|---|
| Kbbyte (KB) | 1,024 個位元組 | 1 KB = 1,024 個位元組 |
| MB 位元組 | 1,0242 個字節 | 1 MB = 1,048,576 個位元組 |
| 千兆位元組(GB) | 1,0243 個字節 | 1 GB = 1,073,741,824 個位元組 |
支援要求
只有文件相關問題會適用於 dotnet/AspNetCore.Docs 存放庫。
針對產品支援,請勿開啟文件問題。 透過下列一或多個支援通道尋求協助:
-
Stack Overflow for ASP.NET Core(標記為:
asp.net-core) -
Stack Overflow:Blazor(標記:
blazor) - ASP.NET Core 通用 Slack 團隊
- Blazor 吉特
對於框架或產品回饋中的可能錯誤,請在 dotnet/aspnetcore issues 為 ASP.NET Core 產品團隊建立問題。 錯誤回報通常需要以下條件:
- 清楚說明問題:開啟問題時,請遵循產品單位所提供的 GitHub 問題範本中的指示。
- 最小重現專案:將專案放在 GitHub 上,讓產品單位工程師下載並執行。 將專案交叉鏈接至問題的起始評論。
如果發現文章可能有問題,請提出文件問題回報。 若要開啟文件問題,請使用文章底部的 [開啟文件問題 意見反應] 連結。 為您的問題新增的中繼資料提供追蹤資料,並自動通知文章的作者。 如果在開啟文件問題之前,產品單元已討論過該主題,請將工程問題的交叉連結放在文件問題的開放式留言中。
GitHub 中的
如需提供關於 Visual Studio 的問題或意見反應,請在 Visual Studio 中使用回報問題或建議功能選項,以開啟 Visual Studio 的內部問題追蹤。 欲了解更多資訊,請參閱Visual Studio Feedback。
若使用 Visual Studio Code 有問題,請在社群支援論壇尋求協助。 如需 Bug 報告和產品意見反應,請在 GitHub 存放庫上microsoft/vscode提出問題。