前言:.NET 平台的兩條路線
| 項目 | .NET Framework | .NET(原 .NET Core) |
|---|---|---|
| 平台 | 僅限 Windows | 跨平台(Windows、Linux、macOS) |
| 最新版本 | 4.8.1(2022) | .NET 10(2025),每年 11 月發布新的主要版本 |
| 開發狀態 | 4.8 是 4.x 系列最後一個主要版本,之後以安全與可靠性更新為主 | 持續開發,並有 LTS/STS 支援週期 |
| Web 框架 | ASP.NET(Web Forms、MVC 5、Web API 2) | ASP.NET Core |
| 支援方式 | 隨所在 Windows 版本的生命週期(4.5.2 之後的版本) | 依各版本的 LTS/STS 週期 |
從 .NET 5 開始,名稱由「.NET Core」改為「.NET」,本文以「.NET Core/.NET」統稱這條路線。
.NET Framework:是由微軟開發的一個軟體開發平臺,一個致力於敏捷軟體開發(Agile software development)的平臺,注重快速應用開發(Rapid application development)以及平臺獨立性、網路透明化。
CLR 是以一種採用系統虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#、F#、VB.NET、C++、Python 等)的開發。.NET 也為應用程式介面(API)提供了新功能和開發工具。
.NET Framework 版本歷史
舊版日期沿用原文;4.7.1 之後的日期取自微軟生命週期頁面,與公告或 RTM 日期可能相差數日。
2002 年 1/16 .NET 1.0(最早的 .NET 架構)
【完整版號 – 1.0.3705】
- 與 Visual Studio .NET 一起發行的第一個版本
- 第一個微軟 Visual Studio .NET 的發行版,被稱作 Visual Studio .NET 2002
- 物件導向的 Web 應用程開發,支援繼承、多型與其他標準物件導向程式設計的功能。
- 以 Microsoft Windows 程式設計為基礎
- 開發人員能夠使用在 Web Server 上使用的 DLL 類別庫來建立比 HTML 輸出更強應用
2003 年 4/24 .NET 1.1
【完整版號 – 1.1.4322】
與 Windows Server 2003 和 Visual Studio .NET 2003 一起發表。第一個被 Windows 作業系統 Windows Server 2003 所內置的 .NET Framework 版本
- 行動裝置控制項(內建了對 mobile ASP.NET 控制項的支援)
- 自動化輸入驗證(加入了 ASP.NET 應用程式的代碼安全存取功能)
- 內建了對 ODBC 和 Oracle 資料庫的支援
2005 年 11/7 .NET 2.0
【完整版號 – 2.0.50727.42】
和 Visual Studio 2005、Visual Web Developer Express 與 SQL Server 2005 一起發表。
- 新的資料控制項(GridView、FormView、DetailsView)
- 新的宣告式資料存取技術(SqlDataSource、ObjectDataSource 與 XmlDataSource 控制項)
- 導覽控制項(SiteMap、Menu、TreeView)
- 主版頁面 (Master Page)
- 登入控制項
- 主題
- 表皮 (skin)
- Web 部件 (Web Part)
- 個人化服務 (Profile)
- 全功能的預先編譯能力
- 全新的當地語系化技術
- 支援 64 位元平台
- 提供者類別模式
2006 年 11/21 .NET 3.0
內建於 Windows Vista,新增四個主要元件:
- Windows Presentation Foundation(WPF)
- Windows Communication Foundation(WCF)
- Windows Workflow Foundation(WF)
- Windows CardSpace
2007 年 11/19 .NET 3.5
與 Visual Studio 2008 和 Windows Server 2008 一起發表。
- 新資料控制項(ListView、DataPager)
- ASP.NET AJAX 含入至 .NET Framework,成為 .NET Framework 的一部份
- 提供支援 LINQ 的 LinqDataSource 控制項
- 包含一個支援 C# 和 VB.Net 中心的語言特性的編譯器,以及對語言整合查詢(LINQ, Language-Integrated Query)的支援
2008 年 8/11 .NET 3.5 Service Pack 1
Visual Studio 2008 Service Pack 1 發表。
- 內含 ASP.NET Dynamic Data
- 在 ASP.NET AJAX 應用程式中支援瀏覽器歷史控制 (controlling browser history)
- 將多個 JavaScript 檔案合併到單一檔案以強化有效的下載
2010 年 4/12 .NET 4.0
與 Visual Studio 2010 一起發表。
- 配合 .NET Framework 4.0 讓 Web 應用程式具有如並列運算函式庫(Parallel Library)等新功能。
- ASP.NET MVC 2.0
- jQuery 完全整合與 ASP.NET AJAX Client Library 強化,以及 AJAX CDN 的支援。
- ASP.NET 的 Render Compatibility (3.5 以前版本或 4.0 版),可控制許多 ASP.NET Web 控制項的繪製行為,以配合標準 HTML 與 jQuery 的處理。
- SEO 的支援。
- 自訂快取提供者 (Extensible Output Cache)。
- QueryExtender 的支援。
- CSS 控制行為的變更。
- 自訂的 Client ID 輸出。
- ViewState 的控制。
- 配合 Visual Studio 2010 的 Web Deploy 工具。
- Entity Framework 4.0 的支援。
- Dynamic Data Framework 與 Chart Control 內建至核心中
4.5 至 4.7
- 2012 年 8/15 .NET 4.5,與 Visual Studio 2012 一起發表
- 2013 年 10/17 .NET 4.5.1,與 Visual Studio 2013 一起發表
- 2014 年 5/5 .NET 4.5.2
- 2015 年 7/20 .NET 4.6,與 Visual Studio 2015 一起發表
- 2015 年 11/30 .NET 4.6.1,與 Visual Studio 2015 Update1 一起發表
- 2016 年 8/2 .NET 4.6.2
- 2017 年 4/5 .NET 4.7,與 Visual Studio 2017 一起發表
4.7.1 至 4.8.1
- 2017 年 10/17 .NET 4.7.1,新增 .NET Standard 2.0 的支援
- 2018 年 4/30 .NET 4.7.2
- 2019 年 4/18 .NET 4.8,.NET Framework 4.x 系列最後一個主要版本
- 2022 年 8/9 .NET 4.8.1,目前最新的 .NET Framework 版本,新增原生 Arm64 支援,可安裝於 Windows 11 與 Windows 10 22H2
.NET Framework 支援狀態
| 版本 | 支援狀態 |
|---|---|
| 2.0、3.0 | 已於 2011-07-12 終止 |
| 4.0、4.5、4.5.1 | 已於 2016-01-12 終止 |
| 4.5.2、4.6、4.6.1 | 已於 2022-04-26 終止 |
| 4.6.2 | 支援至 2027-01-12 |
| 3.5 SP1 | 支援至 2029-01-09 |
| 4.7、4.7.1、4.7.2、4.8、4.8.1 | 隨所在 Windows 版本的生命週期,只要安裝在受支援的 Windows 上就會持續支援 |
新專案若必須使用 .NET Framework,應以 4.8.1(或至少 4.8)為目標。
.NET Core/.NET 版本歷史
.NET Core 在 2016 年推出,是跨平台、開源的重新實作,取代 .NET Framework 成為微軟的主要方向。
| 版本 | 發布日期 | 類型 | 支援狀態(截至 2026 年 9 月) |
|---|---|---|---|
| .NET Core 1.0 | 2016-06-27 | — | 已於 2019-06-27 終止 |
| .NET Core 1.1 | 2016-11-16 | — | 已於 2019-06-27 終止 |
| .NET Core 2.0 | 2017-08-14 | — | 已於 2018-10-01 終止 |
| .NET Core 2.1 | 2018-05-30 | LTS | 已於 2021-08-21 終止 |
| .NET Core 2.2 | 2018-12-04 | — | 已於 2019-12-23 終止 |
| .NET Core 3.0 | 2019-09-23 | — | 已於 2020-03-03 終止 |
| .NET Core 3.1 | 2019-12-03 | LTS | 已於 2022-12-13 終止 |
| .NET 5 | 2020-11-10 | — | 已於 2022-05-10 終止 |
| .NET 6 | 2021-11-08 | LTS | 已於 2024-11-12 終止 |
| .NET 7 | 2022-11-08 | STS | 已於 2024-05-14 終止 |
| .NET 8 | 2023-11-14 | LTS | 維護階段,支援至 2026-11-10 |
| .NET 9 | 2024-11-12 | STS | 維護階段,支援至 2026-11-10 |
| .NET 10 | 2025-11-11 | LTS | 主動支援,支援至 2028-11-14 |
| .NET 11 | 目前為 RC1(2026-09-08) | STS | 預計 2026 年 11 月正式發布 |
發布節奏與支援期間:
- 每年 11 月發布新的主要版本。
- 偶數版本為 LTS,享有三年的免費支援與修補;奇數版本為 STS,支援兩年。
- 各版本的支援結束日期對齊每月第二個週二(Patch Tuesday)。
- 維護階段是支援期間的最後 6 個月,只提供安全性修補。
ASP.NET 的兩條路線
ASP.NET 是微軟的 Web 應用程式開發框架,可用來開發伺服器端應用程式。依所在的平台,分成兩條路線:
| 項目 | ASP.NET(.NET Framework) | ASP.NET Core(.NET) |
|---|---|---|
| 平台 | 僅限 Windows,執行於 IIS | 跨平台,也可在容器中執行 |
| 開發模型 | Web Forms、MVC 5、Web API 2(各自獨立) | MVC 與 Web API 合併為同一套 Controller 模型,另有 Razor Pages、Minimal APIs、Blazor、SignalR、gRPC |
| 伺服器 | IIS(System.Web) |
內建 Kestrel,可搭配 IIS、Nginx、Apache 等作為反向代理 |
| 設定 | web.config |
appsettings.json 與環境變數 |
| Web Forms | 支援 | 不支援 |
| 版本狀態 | 隨 .NET Framework 4.8.1 維護,功能不再擴充 | 隨 .NET 版本持續更新 |
ASP.NET Core 的特色:
- 內建相依性注入(Dependency Injection)與中介軟體(Middleware)管線
- 可單一檔案發佈、支援自我包含(self-contained)部署
- 在 IIS 上透過 ASP.NET Core Module 託管
ASP.NET Core 的請求流程:請求 → Kestrel(或先經過 IIS、Nginx 轉送)→ 中介軟體管線 → 端點(Controller、Razor Page 或 Minimal API)→ 回應。
新專案建議使用 ASP.NET Core,並選擇受支援的 LTS 版本(例如 .NET 10)。既有的 ASP.NET Web Forms 專案沒有直接升級的路徑,微軟提供 System.Web adapters 等工具協助逐步遷移,但 Web Forms 頁面需要重寫。
ASP.NET 運行架構(.NET Framework 與 IIS)
以下內容說明 ASP.NET(.NET Framework)在 IIS 上的運作方式。
.NET Framework 的元件堆疊

ASP.NET 是 Web 應用程式的開發框架,其中 Web Forms 是傳統的開發模型之一,(跟 Windows Form 概念有點像),是伺服器端應用程式的熱門開發工具技術

ASP.NET 運行的架構分為幾個階段:
- 在 IIS 與 Web 伺服器中的訊息流動階段
- 在 ASP.NET 網頁中的訊息分派
- 在 ASP.NET 網頁中的訊息處理
ASP.NET B/S 語言介紹(Web Forms)


瀏覽器與伺服器程式語言
- 在用戶端瀏覽器:主要透過 html、css、javascript 三者大宗前端網頁語言所構成,偏向靜態的頁面資訊呈現
- 伺服器端:可執行程式語言比如 PHP、ASP.NET (CLR)、JSP (JVM)…,偏向動態的後端互動,會需要經由 Server 做過邏輯處理
- 在 ASP.NET(.NET Framework)中主要透過 IIS(Internet Information Services)這套 Server 軟體來處理瀏覽器和伺服器之間互動的業務

ASP.NET 中常見的一些檔案種類
.ashx:一般處理 ASP.NET 核心程序 (在 AJAX 部分會時常看到).aspx:用於 WebForm 前端網頁頁面模板配置.aspx.cs:用於後端伺服器邏輯流程.ascx:控制元件模組(多個控件的組合用於重複利用).asax:包括 ASP.NET 應用程式層級的事件語法.asmx:用於 Web Service 的應用開發.config:配置用文件
在應用程式開發中:
.aspx是@Page指令集的頁面模板(用戶端前段網頁顯示),也就是一系列 html、css、javascript,主要控件(Server Control)也都定義於此.aspx.cs則是伺服器端的後台(端)程式,預設Page_load初始化第一次運行時之進入點
此種前 aspx 後 cs 的方式又稱為 CodeBehind(代碼後置)
.aspx 裏頭我們是可以透過 <%= name %> 或者 <% Say(); %> 兩種語法調用出後端 .cs 的程式回傳結果的
(備註:屬性欄位只允許訪問非 private 的)
缺點:因為預設都直接顯示在最頂部容易破壞網頁




.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default0 : System.Web.UI.Page
{
protected string name = "小明";
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Say()
{
Response.Write("Hello World");
}
}
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default0.aspx.cs" Inherits="Default0" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>TEST</h1>
<br />
<h2><%= name %> </h2>
<br />
<% Say(); %>
</div>
</form>
</body>
</html>
前端的 .aspx 檔案最終編譯出來的 class 會繼承 .cs 的後端檔案的 class

這裡我們要有一個觀念:寫的網站運行時都會被 Compile 為程式集,頁面則是變成 class
接下來我們要來查找編譯後的程式集位置

後台程式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default0 : System.Web.UI.Page
{
protected string name = "小明";
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(this.GetType() + "<br />");
Response.Write(this.GetType().Assembly.Location + "<br />");
}
protected void Say()
{
Response.Write("Hello World");
}
}
經 ILSpy 反編譯後查看 DLL,就可清楚看到 .aspx 會生成一個名為 default0_aspx 的 class 去繼承 Default0

從 Web Forms 到 ASP.NET Core:概念對照
以下是常見 Web Forms 項目在 ASP.NET Core 中的對應做法,供遷移或學習時參考。
| Web Forms(.NET Framework) | ASP.NET Core 的對應做法 |
|---|---|
.aspx 頁面 |
Razor Pages(.cshtml)或 MVC 的 View |
.aspx.cs 後置程式碼 |
Razor Pages 的 PageModel(.cshtml.cs)或 MVC 的 Controller |
.ascx 控制元件 |
Partial View、View Component 或 Razor 元件 |
.ashx 通用處理常式 |
中介軟體(Middleware)或 Minimal API 端點 |
.asmx Web Service |
不支援,改用 Web API 或 gRPC |
Global.asax 應用程式事件 |
Program.cs 中的服務註冊與中介軟體管線 |
web.config |
appsettings.json 與環境變數 |
| Server Control 與 ViewState | 沒有對應的機制,改用 Tag Helper、Model Binding 與前端框架 |
範例:以 Razor Pages 重寫上面的頁面
Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseStaticFiles();
app.MapRazorPages();
app.Run();
Pages/Index.cshtml.cs:
using Microsoft.AspNetCore.Mvc.RazorPages;
public class IndexModel : PageModel
{
public string Name { get; } = "小明";
public void OnGet()
{
}
}
Pages/Index.cshtml:
@page
@model IndexModel
<h1>TEST</h1>
<h2>@Model.Name</h2>
與 Web Forms 的差異:
- 不再有
runat="server"的伺服器控制項,頁面內容直接用@Model.Name這類 Razor 語法輸出。 - 不使用
Response.Write把內容輸出到頁面最上方,輸出位置由.cshtml的標記決定,也就沒有原文提到「顯示在最頂部容易破壞網頁」的問題。 - 不需要 CodeBehind 的編譯關係(
.aspx編譯後繼承.cs的 class),PageModel 與頁面以@model連結。
小結
- .NET Framework 已定案在 4.8.1,維護以 Windows 的生命週期為準;ASP.NET(Web Forms、MVC 5、Web API 2)也隨之進入維護狀態。
- 新專案應使用 .NET 與 ASP.NET Core,並選擇受支援的 LTS 版本。截至 2026 年 9 月,.NET 8 與 .NET 9 都將在 2026-11-10 結束支援,.NET 10 是目前的 LTS。
- 舊有 Web Forms 專案需要評估重寫或逐步遷移的成本,並留意所使用的 .NET Framework 版本是否仍在支援期內(4.6.2 支援至 2027-01-12)。