目录
- 发布前的准备工作
- 发布方式选择:发布文件 vs. 发布到 Azure
- 详细步骤:使用文件发布部署到 IIS
- 1 在 Visual Studio 中发布项目
- 2 在 Windows Server 上安装 IIS
- 3 在 IIS 中创建网站
- 4 配置应用程序池
- 5 绑定网站和设置物理路径
- 6 配置目录权限
- 7 浏览网站
- 部署后的关键配置
- 1 配置连接字符串
- 2 设置环境变量
- 3 配置 ASP.NET Core 模块 (ASP.NET Core 项目的关键)
- 4 启用详细错误信息
- 最佳实践与常见问题
- 1 使用 Web Deploy 进行自动化部署
- 2 使用持续集成/持续部署
- 3 常见问题及解决方案
发布前的准备工作
在开始发布之前,请确保你已经完成了以下准备工作:

(图片来源网络,侵删)
- 目标服务器:一台可以远程访问的 Windows Server(如 Windows Server 2025/2025/2025)。
- 管理员权限:你需要服务器的管理员账户或具有相应权限的账户。
- 开发环境:你的开发机器上安装了 Visual Studio。
- 项目编译成功:确保你的项目在本地可以正常编译和运行。
- Web.config 或 appsettings.json:根据你的 .NET Framework 版本,项目会使用
Web.config(.NET Framework)或appsettings.json(.NET Core / .NET 5+)来配置,确保发布配置正确。
发布方式选择
主要有两种主流的发布方式:
- 发布文件:这是最传统和通用的方式,Visual Studio 将你的项目编译成一组文件(DLL, HTML, CSS, JS, 配置文件等),你将这些文件通过 FTP、文件共享等方式复制到服务器的指定目录下,然后在 IIS 中配置指向这些文件。本指南将重点介绍这种方式。
- 发布到 Azure:如果你的网站是 Azure App Service,可以直接在 Visual Studio 中选择 "发布到 Azure",它会自动完成所有部署步骤,非常方便。
详细步骤:使用文件发布部署到 IIS
这种方式适用于将网站部署到你自己的或租用的 Windows Server 服务器上。
1 在 Visual Studio 中发布项目
- 在 Visual Studio 中,右键点击你的项目,选择 “发布...”。
- 在发布窗口中,选择 “文件夹” 作为发布目标。
- 点击 “配置”,确保选择了 “Release” 配置(而不是 Debug),并选择目标框架(如 .NET Framework 4.8 或 .NET 6.0)。
- 点击 “下一步”。
- 设置一个 “目标位置”,这是一个本地文件夹,Visual Studio 会把所有发布文件放在这里。
C:\Publish\MyWebApp。 - 点击 “下一步”,“完成”。
- Visual Studio 会开始编译并复制文件到目标文件夹,完成后,你会看到发布成功的提示。
C:\Publish\MyWebApp目录下就是你的网站所有文件。
2 在 Windows Server 上安装 IIS
如果服务器上还没有安装 IIS,请按以下步骤安装:
- 以管理员身份登录服务器。
- 打开 “服务器管理器” -> “管理” -> “添加角色和功能”。
- 向导开始后,点击 “下一步” 直到 “服务器角色” 页面。
- 在角色列表中,勾选 “Web 服务器 (IIS)”。
- 在弹出的对话框中,点击 “添加功能”,然后点击 “下一步”。
- 在 “功能” 页面,直接点击 “下一步”。
- 在 “Web 服务器角色” 页面,你可以根据需要选择角色服务,对于基本运行,保持默认即可,然后点击 “下一步”。
- 在 “确认安装选择” 页面,点击 “安装”。
- 等待安装完成,安装成功后,打开浏览器,访问
http://localhost,如果看到 IIS 欢迎页面,说明安装成功。
3 在 IIS 中创建网站
- 在服务器上,打开 “Internet Information Services (IIS) 管理器”。
- 在左侧的连接面板中,右键点击 “网站”,选择 “添加网站...”。
- 网站名称:输入一个易于识别的名称,
MyWebApp。 - 物理路径:点击浏览,选择你从 Visual Studio 复制过来的文件夹,
C:\Publish\MyWebApp。 - 类型:选择 “应用程序”。
- 应用程序池:可以先使用默认的
DefaultAppPool,稍后我们会配置它。 - 端口:默认是 80,如果你的 80 端口被占用,可以换成其他端口(如 8080)。
- 主机名:留空,表示通过服务器的 IP 地址访问,如果你想通过域名访问,就输入你的域名。
- 点击 “确定”。
4 配置应用程序池
应用程序池决定了你的网站以什么身份运行以及使用的 .NET 版本。

(图片来源网络,侵删)
- 在 IIS 管理器左侧,点击 “应用程序池”。
- 找到你刚才创建网站时使用的应用程序池(
DefaultAppPool),或者新建一个专用的。 - .NET Framework 版本:
- 对于 .NET Framework 项目:右键点击应用程序池 -> “基本设置...” -> 将 “.NET CLR 版本” 设置为你项目使用的版本(如
无托管代码,因为 MVC 6+ 是自托管的,或者v4.0.30319对于旧版本)。 - 对于 .NET Core / .NET 5+ 项目:必须设置为 “无托管代码”,因为这些应用是自托管的。
- 对于 .NET Framework 项目:右键点击应用程序池 -> “基本设置...” -> 将 “.NET CLR 版本” 设置为你项目使用的版本(如
- 标识:
- 为了安全,不要使用
SYSTEM。 - 推荐创建一个专门的域用户或本地用户,并将其添加到
IIS_IUSRS组中。 - 在应用程序池的 “高级设置” 中,将 “标识” 改为 “特定用户”,并选择你创建的用户。
- 为了安全,不要使用
5 绑定网站和设置物理路径
这一步在创建网站时已经完成,但有时需要修改。
- 绑定:在网站节点下,双击 “绑定...”,你可以在这里配置 HTTP/HTTPS、端口、主机名等,为了安全,建议配置一个 SSL 证书。
- 物理路径:在网站节点下,双击 “默认文档”,确保你的首页(如
index.html,default.aspx,Home/Index)在列表中,双击 视图” 可以检查文件是否正确。
6 配置目录权限
这是最常见出错的地方!IIS 进程需要读取你网站文件的权限。
- 找到你网站的物理路径(
C:\Publish\MyWebApp)。 - 右键点击该文件夹 -> “属性” -> “安全” 选项卡。
- 点击 “编辑...” -> “添加...”。
- 输入
IIS_IUSRS并检查名称,然后点击 “确定”。 - 在组或用户名列表中,选中
IIS_IUSRS。 - 在下方的权限框中,勾选 “读取” 和 “读取和执行”。
- 如果你的网站需要写入文件(如上传文件),还需要勾选 “写入”。
- 点击 “确定” 保存。
7 浏览网站
在 IIS 管理器中,选中你的网站,然后点击右侧的 “浏览” 按钮。
- 如果一切正常,你应该能看到你的网站首页。
- 如果出现 HTTP Error 500.19 - Internal Server Error,通常是
Web.config权限问题或

(图片来源网络,侵删)
