第一步:确认你的 ASP.NET 项目类型
你需要知道你的项目属于哪个“阵营”,因为这决定了运行方式:

-
传统 ASP.NET Web Forms / MVC (.NET Framework):
- 特点:基于 .NET Framework,通常使用 Visual Studio 开发。
- 项目文件:
.csproj(旧格式)。 - 部署:通常需要将编译好的文件(DLL)和 Web.config 部署到 Windows Server 上的 IIS。
-
现代 ASP.NET Core (MVC / Razor Pages / Blazor / API) (.NET 5/6/7/8):
- 特点:跨平台(Windows, macOS, Linux),性能更好,是当前的主流。
- 项目文件:
.csproj(新格式,SDK-style)。 - 部署:方式非常灵活,可以部署在 IIS 上,也可以使用跨平台的 Kestrel 服务器自托管。
第二步:选择运行环境
根据你的场景选择:
-
本地开发与调试 (最常用)
(图片来源网络,侵删)- 目的:快速编写代码、测试功能、查看错误。
- 工具:Visual Studio (Windows) 或 Visual Studio Code (跨平台)。
-
本地运行已发布的项目
- 目的:测试已编译打包好的网站,模拟生产环境。
- 工具:命令行、IIS Express (VS 内置) 或完整的 IIS。
-
服务器部署 (生产环境)
- 目的:让网站在公网上可以被访问。
- 工具:IIS (Windows)、Nginx/Apache (Linux)、Docker 容器等。
详细操作指南
本地开发与调试
这是最简单、最直接的方式。
A. 使用 Visual Studio (推荐,适用于 .NET Framework 和 .NET Core)
-
安装 Visual Studio:
(图片来源网络,侵删)- 如果你开发的是 .NET Framework 项目,安装 Visual Studio 时请确保勾选 ".NET 桌面开发" 工作负载。
- 如果你开发的是 .NET Core 项目,安装 Visual Studio 时请确保勾选 "ASP.NET 和 Web 开发" 工作负载。
-
打开和运行项目:
- 打开你的 ASP.NET 解决方案 (
.sln文件) 或项目 (.csproj文件)。 - 在 Visual Studio 顶部工具栏中,选择一个 启动配置 (通常是你的项目名称)。
- 点击绿色的 “播放”按钮 (▶)。
- Visual Studio 会自动完成以下所有事情:
- 还原 NuGet 包:下载项目所需的所有依赖库。
- 编译项目:将你的代码编译成 DLL。
- 启动开发服务器:
- 对于 .NET Framework,通常是 IIS Express。
- 对于 .NET Core,通常是内置的 Kestrel 服务器,并通过一个反向代理(如 IIS Express)暴露出来。
- 在浏览器中打开网站:默认会在
https://localhost:xxxx或http://localhost:xxxx(xxxx 是一个随机端口号) 打开你的网站。
- 打开你的 ASP.NET 解决方案 (
-
调试:
- 你可以在代码中设置断点(点击行号旁边),然后再次点击播放按钮。
- 当代码执行到断点时,程序会暂停,你就可以查看变量的值、单步执行代码,进行调试。
B. 使用 Visual Studio Code (适用于 .NET Core)
-
安装前提:
- 安装 .NET SDK (从 dotnet.microsoft.com 下载)。
- 安装 Visual Studio Code。
- 在 VS Code 中安装 C# 扩展(由 Microsoft 发布)。
-
打开和运行项目:
- 在 VS Code 中打开你的项目文件夹。
- 按
F5键,或者点击侧边栏的“运行和调试”图标,然后点击“运行和调试”按钮。 - VS Code 会自动检测项目类型,并启动一个调试会话,默认使用 .NET CLI 命令
dotnet watch run来运行项目。 - 网站同样会在
https://localhost:xxxx或http://localhost:xxxx启动。
本地运行已发布的项目
当你完成开发,需要测试打包好的发布版本时。
-
发布项目:
- 在 Visual Studio 中,右键点击你的项目 -> 发布。
- 选择 "文件夹" 作为目标位置。
- 选择发布配置(如
Release)。 - 点击 "发布",这会在你指定的文件夹中生成所有编译好的文件(DLL、HTML、CSS、JS、配置文件等)。
-
运行发布后的文件:
-
方法 1:使用命令行(最通用)
- 打开命令行(Windows 的
cmd或PowerShell)。 - 使用
cd命令进入你刚才发布到的文件夹。 - 对于 .NET Core 项目,运行以下命令:
dotnet your-app-name.dll
(
your-app-name.dll是你发布后生成的 DLL 文件名) - 网站就会启动,你可以在浏览器中访问
http://localhost:5000或类似的地址。
- 打开命令行(Windows 的
-
方法 2:使用 IIS Express(仅限 Windows,适合 .NET Framework 和 .NET Core)
- Visual Studio 在发布时,有时会生成一个用于 IIS Express 的
applicationhost.config文件。 - 你可以直接双击这个文件,它会在 IIS Express 中启动你的网站,无需安装完整的 IIS。
- Visual Studio 在发布时,有时会生成一个用于 IIS Express 的
-
方法 3:使用完整的 IIS(仅限 Windows,适合生产环境模拟)
- 需要在 Windows Server 或 Windows 10/11 专业版/企业版上安装 IIS。
- 在 IIS 管理器中,添加一个“网站”,指向你发布文件的物理路径。
- 配置应用程序池(.NET Framework 项目需要对应版本,.NET Core 项目需要配置为“无托管代码”并指定
dotnet.exe路径)。 - 启动网站即可。
-
服务器部署 (生产环境)
这是让网站对外提供服务的关键步骤。
A. 部署到 Windows Server (使用 IIS)
这是最经典的部署方式,尤其适合 .NET Framework 和需要利用 Windows 生态的企业环境。
- 发布项目:同场景二,选择“文件夹”目标,并选择“Release”配置。
- 在服务器上安装 .NET 运行时:
- .NET Framework: 安装对应版本的 .NET Framework 运行时。
- .NET Core: 安装对应版本的 .NET Runtime (不是 SDK)。
- 在服务器上安装和配置 IIS:
- 通过 "服务器管理器" -> "添加角色和功能" 来安装 IIS。
- 安装时,确保勾选 "ASP.NET"(在 "Web 服务器 (IIS)" -> "应用程序开发" 下)。
- 部署文件:
- 将发布文件夹中的所有文件(
web.config,*.dll,*.html等)复制到服务器的某个目录,C:\inetpub\wwwroot\MyWebApp。
- 将发布文件夹中的所有文件(
- 在 IIS 中配置网站:
- 打开 IIS 管理器。
- 在 "网站" 节点上右键,选择 "添加网站"。
- 网站名称:给你的网站起个名字。
- 物理路径:指向你刚才复制文件的文件夹 (
C:\inetpub\wwwroot\MyWebApp)。 - 端口:设置一个未被占用的端口号(如 80 或 443)。
- 应用程序池:
- 对于 .NET Framework,选择对应的 .NET 版本(如
No Managed Code或ASP.NET v4.0)。 - 对于 .NET Core,创建一个新的应用程序池,选择 "无托管代码",然后在其高级设置中,将 "托管模式" 设为 "经典",并设置 "托管管道" 版本为 "无托管代码",你还需要在
web.config中配置aspNetCore节点,指向dotnet.exe的路径和你的 DLL。
- 对于 .NET Framework,选择对应的 .NET 版本(如
- 启动网站:点击“启动”按钮,你的网站现在就可以通过服务器的 IP 地址或域名访问了。
B. 部署到 Linux 或跨平台 (自托管 Kestrel)
这是现代 ASP.NET Core 推荐的方式,非常灵活。
-
发布项目:
- 在 Visual Studio 中发布时,选择 "Linux 通用" 或 "文件夹" 目标。
- 关键:在发布配置中,将 "目标运行时" 设置为
linux-x64(或其他目标平台,如win-x64,osx-x64),并勾选 "生成独立的部署",这会将 .NET 运行时也打包进去,无需服务器上预先安装 .NET。
-
将文件传输到服务器:
- 使用
scp,rsync, FTP 等工具将整个发布文件夹上传到你的 Linux 服务器。
- 使用
-
在服务器上运行:
- 通过 SSH 登录到 Linux 服务器。
- 使用
cd命令进入你上传的文件夹。 - 给你的可执行文件(
your-app-name)添加执行权限:chmod +x your-app-name
- 运行你的应用:
./your-app-name
- 你的网站已经在 Kestrel 服务器上启动了,默认监听
http://localhost:5000,但此时还无法从外部访问。
-
配置反向代理 (Nginx / Apache):
-
出于安全和性能考虑,永远不要直接将 Kestrel 暴露在公网上,应该使用一个反向代理服务器(如 Nginx)来接收外部请求,然后转发给 Kestrel。
-
Nginx 配置示例 (
/etc/nginx/sites-available/your-site):server { listen 80; server_name your-domain.com; # 你的域名或服务器IP location / { proxy_pass http://localhost:5000; # 转发给Kestrel proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } -
保存文件后,创建一个符号链接到
sites-enabled目录,然后重启 Nginx 服务:sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置 sudo systemctl restart nginx
-
-
使用进程管理器 (推荐):
- 直接在命令行运行的应用,如果关闭 SSH 窗口,程序就会停止,为了解决这个问题,请使用进程管理器,如
systemd或PM2。 - 使用
systemd(Linux 标准):创建一个服务单元文件 (/etc/systemd/system/kestrel-mywebapp.service),定义如何启动、停止和管理你的应用,然后设置为开机自启,这是最稳定、最推荐的方式。
- 直接在命令行运行的应用,如果关闭 SSH 窗口,程序就会停止,为了解决这个问题,请使用进程管理器,如
总结与建议
| 场景 | 推荐工具 | 说明 |
|---|---|---|
| 本地开发调试 | Visual Studio (Windows) 或 VS Code + C# 扩展 (跨平台) | 最简单,一键启动,支持强大调试功能。 |
| 本地测试发布版 | 命令行 (dotnet ...dll) 或 IIS Express |
用于验证发布包是否正确。 |
| 生产环境部署 | Windows Server + IIS 或 Linux + Nginx + Kestrel | 根据你的服务器和技术栈选择,现代 .NET Core 项目更推荐 Linux + Nginx 的组合。 |
对于初学者,请从场景一(使用 Visual Studio 开发调试)开始,这是最快上手的方式,当你需要将网站分享给他人或部署上线时,再逐步学习场景二和场景三。
