发布流程的核心步骤

(图片来源网络,侵删)
- 准备工作:确保网站代码已经完成测试,并准备好目标服务器。
- 选择发布方法:根据你的服务器环境(Windows IIS, Linux, Azure 等)选择合适的发布方式。
- 配置发布设置:在 Visual Studio 中配置发布参数(服务器地址、凭据、发布文件等)。
- 执行发布:将代码从开发机传输到服务器。
- 服务器端配置:在服务器上安装必要的组件(如 .NET Runtime)、配置 IIS、设置数据库连接等。
- 验证与维护:测试网站是否正常运行,并了解后续的更新流程。
第一步:准备工作
-
项目清理:
- 在 Visual Studio 中,右键点击解决方案 -> “配置解决方案”。
- 将活动解决方案配置从 “调试” 切换为 “发布” 或 “Release”,这会确保编译时移除调试符号,并优化代码。
- 右键点击你的 Web 项目 -> “生成”,确保项目在 Release 模式下能成功编译。
-
目标服务器准备:
- Windows Server:确保服务器已安装 IIS (Internet Information Services),可以通过 “服务器管理器” -> “添加角色和功能” 来安装。
- .NET Runtime:你的网站是 .NET Framework 还是 .NET Core / .NET 5+?
- ASP.NET MVC (基于 .NET Framework):服务器上需要安装与你项目版本对应的 .NET Framework Runtime (.NET Framework 4.8),这通常包含在 IIS 的安装包中,但最好手动确认。
- ASP.NET Core (跨平台):服务器上需要安装 .NET Core Runtime 或 .NET SDK (如果需要预编译 Razor Pages),可以从 Microsoft 官网 下载。
- 数据库:确保数据库服务器(如 SQL Server)已安装,并且网站将要连接的数据库已经创建,并且发布应用的连接账户有正确的读写权限。
第二步:选择发布方法
这是最关键的一步,常见方法如下:
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 文件系统发布 | - 本地测试 - 将发布文件交给运维人员手动部署到服务器 |
简单、直接,不依赖网络服务 | 不适合频繁发布,需要手动处理文件覆盖 |
| FTP/S 发布 | - 虚拟主机 - 没有部署扩展的 IIS 服务器 |
兼容性好,几乎所有虚拟主机都支持 | 速度较慢,文件同步不精确,容易出错 |
| Web Deploy 发布 | - Windows Server + IIS (最推荐) - 有完整服务器管理权限 |
自动化程度最高,可以同步文件、配置数据库、设置 IIS 应用程序池和网站设置 | 服务器端需要安装 Web Deploy Agent |
| Git 发布 | - Azure App Service (首选) - 支持 Kudu 服务的云平台 |
集成 CI/CD,通过 Git Push 即可部署,非常方便 | 主要适用于云平台 |
| Docker 发布 | - 现代化、容器化部署 - Linux 服务器 |
环境一致性极好,易于扩展和管理 | 需要掌握 Docker 知识 |
对于传统的 Windows Server + IIS 场景,强烈推荐使用 Web Deploy。

(图片来源网络,侵删)
第三步:在 Visual Studio 中配置发布(以 Web Deploy 为例)
-
右键点击你的 Web 项目 -> 选择 “发布”。
-
选择发布目标:
- 首次发布,选择 “自定义”。
- 如果之前配置过,可以直接从最近的目标中选择。
-
配置发布配置文件:
- 目标:输入你的 IIS 服务器的地址,格式为
https://<你的服务器IP或域名>:8172/msdeploy.axd,端口8172是 Web Deploy 的默认端口,如果服务器配置了不同的端口,请相应修改。 - 站点/应用程序:输入你在 IIS 中将要创建的网站名称,
Default Web Site/MyMvcApp。 - 用户名和密码:输入在服务器上配置的、有权使用 Web Deploy 的 Windows 用户凭据(通常是管理员账户)。
- 点击 “验证连接”,如果成功,说明 Visual Studio 可以与服务器通信。
- 连接名称:给这个连接起一个名字,
Production-Server。
- 目标:输入你的 IIS 服务器的地址,格式为
-
设置发布选项:
(图片来源网络,侵删)- 点击 “下一步”,进入“设置”页面。
- 配置:确保选择的是 “Release”。
- 文件发布选项:
- 删除目标上的额外文件:勾选此项,这会确保服务器上的文件与你的发布包完全一致,删除不再存在于项目中的旧文件。
- 数据库:
- 如果你的项目包含数据库,在这里可以配置数据库发布,它会生成一个
.sql脚本,在部署时执行。 - 你需要提供目标数据库的服务器名、数据库名和连接凭据。
- 对于生产环境,建议先手动备份数据库,然后谨慎使用此功能。
- 如果你的项目包含数据库,在这里可以配置数据库发布,它会生成一个
-
预览并发布:
- 点击 “下一步”,进入“预览”页面。
- 这里会显示将要被复制、删除或更新的文件列表,检查无误后,点击 “发布”。
- Visual Studio 会将文件打包并通过 Web Deploy 发送到服务器,并自动配置 IIS。
第四步:服务器端配置(Web Deploy 自动配置失败)
Web Deploy 可能无法完全配置好所有东西,你需要手动检查:
-
安装 Web Deploy:
- 如果验证连接失败,很可能是因为服务器上没有安装 Web Deploy。
- 下载 Web Deploy 3.6 for Hosting Servers 并安装:Microsoft Web Platform Installer 或直接下载安装包。
-
配置 IIS 网站:
- 打开服务器的 IIS 管理器。
- 在左侧树状图中,右键点击 “网站” -> “添加网站”。
- 网站名称:与你在 Visual Studio 中设置的名称一致(如
MyMvcApp)。 - 物理路径:Web Deploy 默认会将文件发布到
C:\inetpub\wwwroot\MyMvcApp,请确保此路径存在,IIS_IUSRS 或 NETWORK SERVICE 用户有读取权限。 - 端口:通常使用 80 (HTTP) 或 443 (HTTPS),80 端口被占用,可以换一个。
- 应用程序池:
- 为你的网站创建一个新的应用程序池,
MyMvcApp-Pool。 - .NET Framework 版本:如果你的项目是 .NET Framework 4.x,选择对应的版本。
- 托管管道模式:选择 “集成”。
- 标识:建议选择 "ApplicationPoolIdentity",这是最安全的。
- 为你的网站创建一个新的应用程序池,
- 在网站设置中,确保将应用程序池设置为刚刚创建的
MyMvcApp-Pool。
-
配置数据库连接字符串:
- 这是最容易出错的地方。永远不要将开发环境的数据库连接字符串(通常指向
localhost或.\SQLEXPRESS)直接用于生产环境! - 在 Web.config 文件中,找到
<connectionStrings>节点。 - 修改
connectionString属性,指向你的生产数据库服务器地址、数据库名、用户名和密码。 "Data Source=PROD-SQL-SERVER;Initial Catalog=MyMvcAppDB;User Id=myuser;Password=mypassword;"- 安全提示:不要将密码明文写在 Web.config 中,应该使用 IIS 提供的“加密配置”功能或 Azure Key Vault 等方案来保护敏感信息。
- 这是最容易出错的地方。永远不要将开发环境的数据库连接字符串(通常指向
第五步:验证与维护
- 访问网站:在浏览器中输入
http://<你的服务器IP或域名>,查看网站是否正常显示。 - 检查日志:如果网站出错,检查以下日志文件:
- Windows 事件查看器:查看“应用程序”日志,可能会有 .NET 的错误信息。
- IIS 日志:位于 `C:\inetpub\logs\LogFiles\W
