目录

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

发布前的准备工作

在开始发布之前,请确保你已经完成了以下准备工作:

asp.net mvc网站发布
(图片来源网络,侵删)
  • 目标服务器:一台可以远程访问的 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 中发布项目

  1. 在 Visual Studio 中,右键点击你的项目,选择 “发布...”
  2. 在发布窗口中,选择 “文件夹” 作为发布目标。
  3. 点击 “配置”,确保选择了 “Release” 配置(而不是 Debug),并选择目标框架(如 .NET Framework 4.8 或 .NET 6.0)。
  4. 点击 “下一步”
  5. 设置一个 “目标位置”,这是一个本地文件夹,Visual Studio 会把所有发布文件放在这里。C:\Publish\MyWebApp
  6. 点击 “下一步”“完成”
  7. Visual Studio 会开始编译并复制文件到目标文件夹,完成后,你会看到发布成功的提示。C:\Publish\MyWebApp 目录下就是你的网站所有文件。

2 在 Windows Server 上安装 IIS

如果服务器上还没有安装 IIS,请按以下步骤安装:

  1. 以管理员身份登录服务器。
  2. 打开 “服务器管理器” -> “管理” -> “添加角色和功能”
  3. 向导开始后,点击 “下一步” 直到 “服务器角色” 页面。
  4. 在角色列表中,勾选 “Web 服务器 (IIS)”
  5. 在弹出的对话框中,点击 “添加功能”,然后点击 “下一步”
  6. “功能” 页面,直接点击 “下一步”
  7. “Web 服务器角色” 页面,你可以根据需要选择角色服务,对于基本运行,保持默认即可,然后点击 “下一步”
  8. “确认安装选择” 页面,点击 “安装”
  9. 等待安装完成,安装成功后,打开浏览器,访问 http://localhost,如果看到 IIS 欢迎页面,说明安装成功。

3 在 IIS 中创建网站

  1. 在服务器上,打开 “Internet Information Services (IIS) 管理器”
  2. 在左侧的连接面板中,右键点击 “网站”,选择 “添加网站...”
  3. 网站名称:输入一个易于识别的名称,MyWebApp
  4. 物理路径:点击浏览,选择你从 Visual Studio 复制过来的文件夹,C:\Publish\MyWebApp
  5. 类型:选择 “应用程序”
  6. 应用程序池:可以先使用默认的 DefaultAppPool,稍后我们会配置它。
  7. 端口:默认是 80,如果你的 80 端口被占用,可以换成其他端口(如 8080)。
  8. 主机名:留空,表示通过服务器的 IP 地址访问,如果你想通过域名访问,就输入你的域名。
  9. 点击 “确定”

4 配置应用程序池

应用程序池决定了你的网站以什么身份运行以及使用的 .NET 版本。

asp.net mvc网站发布
(图片来源网络,侵删)
  1. 在 IIS 管理器左侧,点击 “应用程序池”
  2. 找到你刚才创建网站时使用的应用程序池(DefaultAppPool),或者新建一个专用的。
  3. .NET Framework 版本
    • 对于 .NET Framework 项目:右键点击应用程序池 -> “基本设置...” -> 将 “.NET CLR 版本” 设置为你项目使用的版本(如 无托管代码,因为 MVC 6+ 是自托管的,或者 v4.0.30319 对于旧版本)。
    • 对于 .NET Core / .NET 5+ 项目:必须设置为 “无托管代码”,因为这些应用是自托管的。
  4. 标识
    • 为了安全,不要使用 SYSTEM
    • 推荐创建一个专门的域用户或本地用户,并将其添加到 IIS_IUSRS 组中。
    • 在应用程序池的 “高级设置” 中,将 “标识” 改为 “特定用户”,并选择你创建的用户。

5 绑定网站和设置物理路径

这一步在创建网站时已经完成,但有时需要修改。

  • 绑定:在网站节点下,双击 “绑定...”,你可以在这里配置 HTTP/HTTPS、端口、主机名等,为了安全,建议配置一个 SSL 证书。
  • 物理路径:在网站节点下,双击 “默认文档”,确保你的首页(如 index.html, default.aspx, Home/Index)在列表中,双击 视图” 可以检查文件是否正确。

6 配置目录权限

这是最常见出错的地方!IIS 进程需要读取你网站文件的权限。

  1. 找到你网站的物理路径(C:\Publish\MyWebApp)。
  2. 右键点击该文件夹 -> “属性” -> “安全” 选项卡。
  3. 点击 “编辑...” -> “添加...”
  4. 输入 IIS_IUSRS 并检查名称,然后点击 “确定”
  5. 在组或用户名列表中,选中 IIS_IUSRS
  6. 在下方的权限框中,勾选 “读取”“读取和执行”
  7. 如果你的网站需要写入文件(如上传文件),还需要勾选 “写入”
  8. 点击 “确定” 保存。

7 浏览网站

在 IIS 管理器中,选中你的网站,然后点击右侧的 “浏览” 按钮。

  • 如果一切正常,你应该能看到你的网站首页。
  • 如果出现 HTTP Error 500.19 - Internal Server Error,通常是 Web.config 权限问题或
asp.net mvc网站发布
(图片来源网络,侵删)