目录

  1. 第一部分:准备工作

    iis部署asp.net网站
    (图片来源网络,侵删)
    • 1. 环境要求
    • 2. 准备你的 ASP.NET 网站
    • 3. 安装 IIS 和必要的组件
  2. 第二部分:部署网站

    • 1. 方法一:部署发布包(推荐)
    • 2. 方法二:直接部署源代码(不推荐用于生产环境)
  3. 第三部分:配置网站

    • 1. 添加网站
    • 2. 配置应用程序池
    • 3. 配置网站绑定
    • 4. 配置目录和权限
    • 5. 配置 ASP.NET 版本
  4. 第四部分:高级配置与优化

    • 1. 配置默认文档
    • 2. 配置错误页
    • 3. 配置重定向规则
    • 4. 配置 HTTPS (SSL/TLS)
  5. 第五部分:常见问题与故障排除

    iis部署asp.net网站
    (图片来源网络,侵删)
    • 1. HTTP 错误 403.14 - Forbidden
    • 2. HTTP 错误 500.19 - Internal Server Error
    • 3. 500.23 - This page cannot be displayed because an application pool is in an unhealthy state
    • 4. 404.0 - Not Found
    • 5. 如何查看详细的错误日志

第一部分:准备工作

在开始部署之前,请确保你已经完成了以下准备工作。

1. 环境要求

  • 操作系统: Windows Server 2025/2025/2025 或 Windows 10/11 专业版/企业版。
  • IIS: Windows 自带的 Web 服务器角色。
  • .NET Framework: 你的 ASP.NET 项目所依赖的版本(.NET Framework 4.8, 4.7.2 等),通常在安装 IIS 时会自动安装。
  • 网站项目: 已经开发完成的 ASP.NET Web Forms, MVC, Web API 或其他基于 .NET Framework 的项目。

2. 准备你的 ASP.NET 网站

对于生产环境,最佳实践是部署发布包,而不是源代码。

  1. 打开你的 ASP.NET 项目
  2. 解决方案资源管理器 中,右键点击你的项目,选择 “发布”
  3. 在“发布”向导中:
    • 选择 “文件夹” 作为目标位置。
    • 点击“发布”。
  4. 等待 Visual Studio 完成打包和发布,完成后,你会在指定的文件夹中看到一个包含 .aspx, .dll, .config 等文件的文件夹,这就是我们将要部署到 IIS 的内容。

3. 安装 IIS 和必要的组件

如果你的系统还没有安装 IIS,请按以下步骤操作:

  1. 打开“服务器管理器” (Server Manager)。
  2. 点击 “管理” -> “添加角色和功能”
  3. 在向导中,一直点击 “下一步” 直到 “角色” 页面。
  4. 勾选 “Web 服务器 (IIS)” 角色。
  5. 在弹出的“添加角色服务”对话框中,确保勾选了以下功能(默认会勾选大部分):
    • 应用程序开发: 确保勾选 .NET Extensibility 3.5/4.5/4.8ASP.NET 3.5/4.5/4.8,这是运行 ASP.NET 网站的核心。
    • 健康诊断: 勾选 HTTP 日志记录,这对排查问题至关重要。
    • 安全性: 根据需要选择。
  6. 点击 “安装”,等待安装完成。

第二部分:部署网站

有两种主要方法将网站内容放到 IIS 中。

iis部署asp.net网站
(图片来源网络,侵删)

部署发布包(强烈推荐)

这是最标准、最安全的方法。

  1. 复制文件: 将在 2 节 中生成的发布包文件夹,复制到服务器的某个位置,C:\inetpub\wwwroot\MyWebApp
  2. 授予 IIS 权限: IIS 的默认进程标识是 IIS_IUSRS,你需要为这个用户组授予对网站文件夹的读取和执行权限。
    • 右键点击你的网站文件夹 (如 MyWebApp) -> “属性”
    • 切换到 “安全” 选项卡。
    • 点击 “编辑” -> “添加”
    • 输入 IIS_IUSRS,点击 “检查名称”“确定”
    • 在权限列表中,为 IIS_IUSRS 勾选 “读取和执行”“列出文件夹内容”“读取”
    • 点击 “应用” -> “确定”

直接部署源代码(不推荐用于生产环境)

这种方法只适合快速测试,因为源代码暴露在服务器上,存在安全风险。

  1. 将你的整个 Visual Studio 项目文件夹复制到 C:\inetpub\wwwroot 或其子目录中。
  2. 同样,需要为 IIS_IUSRS 用户组授予对项目文件夹的读取和执行权限。

第三部分:配置网站

我们需要在 IIS 管理器中创建一个网站来托管这些文件。

  1. 打开 IIS 管理器: 在开始菜单中搜索并打开 “Internet Information Services (IIS) 管理器”

1. 添加网站

  1. 在左侧的“连接”窗格中,右键点击 “网站”,选择 “添加网站”
  2. 网站名称: 输入一个易于识别的名称,MyWebApp
  3. 物理路径: 浏览并选择你存放网站文件的文件夹(C:\inetpub\wwwroot\MyWebApp)。
  4. 类型: 保持默认的 “网站”
  5. 应用程序池: 可以选择新建一个,也可以使用一个现有的,通常建议为每个网站创建一个独立的应用程序池。
  6. 绑定:
    • 类型: http
    • IP 地址: (所有未分配的 IP)
    • 端口: 80 (HTTP 的默认端口)
    • 主机名: 如果你有域名,可以在这里填写,www.mydomain.com,如果只是内部测试,可以留空。
  7. 网站目录: 保持默认勾选 “立即启动网站”
  8. 点击 “确定”

2. 配置应用程序池

应用程序池是隔离网站运行环境的关键。

  1. 在 IIS 管理器左侧,点击 “应用程序池”
  2. 找到你刚才创建的应用程序池(通常和网站同名)。
  3. 设置 .NET Framework 版本:
    • 右键点击你的应用程序池 -> “基本设置”
    • .NET CLR 版本 下拉菜单中,选择你的项目所需的版本(无托管代码,因为 .NET 4.x+ 的应用程序是“无托管代码”模式,但运行的是 .NET Framework 代码,这里选择 无托管代码 是正确的)。
    • 重要提示: 对于 .NET Framework 4.x 应用,请确保选择 无托管代码,而不是 v4.0v4.0 是旧的托管管道模式。
  4. 配置进程模型 (高级设置):
    • 右键点击应用程序池 -> “高级设置”
    • 标识: 默认是 ApplicationPoolIdentity,这是最安全的设置,它会在 Windows 安全中创建一个同名用户 (MyWebApp) 并赋予其最小权限,如果你想使用特定的账户(如 NETWORK SERVICE),可以在这里更改。
    • 启用32位应用程序: 如果你的网站是 32 位编译的(例如引用了 32 位的 COM 组件),需要将此值设置为 True,否则保持 False

3. 配置网站绑定

绑定定义了如何访问你的网站。

  1. 在左侧“连接”窗格中,点击你的网站。
  2. 在中间的“操作”窗格中,点击 “绑定”
  3. 你会看到一个 HTTP 绑定,你可以:
    • 添加 HTTPS 绑定: 点击 “添加”,选择 https 类型,选择一个已安装的 SSL 证书,端口 443
    • 编辑现有绑定: 双击现有绑定可以修改端口或主机名。

4. 配置目录和权限

确保 IIS 进程有权限读取网站文件。

  1. 在 IIS 管理器中,点击你的网站。
  2. 在中间的“功能视图”中,双击 “授权规则”
  3. 默认情况下,应该有一条规则允许“所有用户”的“读取”权限,如果没有,请点击 “添加允许规则”
  4. 写入权限: 如果你的网站需要上传文件(如头像、文档),则需要为特定的目录(如 Uploads)添加“写入”权限。不要轻易给整个网站根目录写入权限!

5. 配置 ASP.NET 版本

IIS 通过一个名为 aspnet_regiis.exe 的工具来处理 ASP.NET 的脚本映射和版本注册。

  1. 打开命令提示符(管理员)
  2. 运行以下命令来注册指定版本的 ASP.NET,要注册 .NET Framework 4.0:
    %windir%\Microsoft.NET\Framework64\v4.0.30319\  # 64位系统
    %windir%\Microsoft.NET\Framework\v4.0.30319\    # 32位系统

    然后执行:

    aspnet_regiis.exe -i

    这会为 IIS 注册所有 .aspx, .asmx 等文件的处理器。


第四部分:高级配置与优化

1. 配置默认文档

当用户访问 http://your-site.com 时,IIS 需要知道要显示哪个文件(如 Default.aspx, index.html)。

  1. 在 IIS 管理器中,双击 “默认文档”
  2. 点击右侧的 “添加”,输入你的首页文件名,如 Default.aspx
  3. 使用右侧的 “上移”“下移” 按钮调整顺序,IIS 会从上到下依次尝试列表中的文件。

2. 配置错误页

当网站出错时,显示友好的错误页面而不是默认的 IIS 黄色页面。

  1. 在 IIS 管理器中,双击 “错误页”
  2. 在右侧操作栏,点击 “编辑功能设置”
  3. 详细错误: 勾选 “将详细错误发送到客户端”(仅用于开发/测试环境,生产环境应取消勾选)。
  4. 自定义错误页: 你可以为不同的 HTTP 状态码(如 404, 500)指定自定义的 HTML 页面,创建一个 html 文件,然后在这里指定。

3. 配置重定向规则

将 HTTP 流量重定向到 HTTPS。

  1. 在 IIS 管理器中,双击 “URL 重写”
  2. 在右侧操作栏,点击 “添加规则”
  3. 选择 “入站规则” -> “空白规则” -> “确定”
  4. 名称: HTTP to HTTPS Redirect
  5. 匹配 URL: 模式输入 。
  6. 条件: 添加一个条件,{HTTPS} 条件输入 off
  7. 操作: 操作类型选择 “重定向”,重定向 URL 输入 https://{HTTP_HOST}/{R:1},勾选 “将查询字符串作为重定向 URL 的一部分包含”,响应代码选择 “永久(301)”
  8. 点击 “应用”

4. 配置 HTTPS (SSL/TLS)

为了安全,强烈建议为所有网站配置 HTTPS。

  1. 获取 SSL 证书: 可以从公共 CA (如 Let's Encrypt - 免费, DigiCert, GlobalSign 等) 获取。
  2. 安装证书:
    • 在 IIS 管理器中,点击服务器根节点。
    • 双击 “服务器证书”
    • 点击 “导入”,按照向导导入你的证书文件。
  3. 绑定网站:
    • 3 节 所述,为你的网站添加一个 https 绑定,并选择你刚刚导入的证书。

第五部分:常见问题与故障排除

1. HTTP 错误 403.14 - Forbidden

  • 原因: IIS 成功找到了你的网站文件夹,但无法找到默认文档(如 Default.aspx)。
  • 解决方案:
    1. 检查网站文件夹中是否有 Default.aspx 或其他首页文件。
    2. 进入 IIS 管理器,双击你网站的 “默认文档”,确保你的首页文件在列表中并且顺序正确。
    3. 检查网站文件夹的 NTFS 权限,确保 IIS_IUSRSUsers 组有读取和执行权限。

2. HTTP 错误 500.19 - Internal Server Error

  • 原因: 无法读取配置文件 web.config,通常是权限问题。
  • 解决方案:
    1. 右键点击你的网站文件夹 -> “属性” -> “安全” 选项卡。
    2. 确保以下用户都有 “读取” 权限:
      • SYSTEM
      • Administrators
      • IIS_IUSRS
    3. 点击 “应用” -> “确定”,然后刷新 IIS 网站。

3. 500.23 - This page cannot be displayed because an application pool is in an unhealthy state

  • 原因: 应用程序池崩溃或无法启动。
  • 解决方案:
    1. 在 IIS 管理器中,停止并重新启动你的应用程序池。
    2. 检查应用程序池的 “高级设置” -> “进程模型” -> “标识”,确保使用的账户有足够的权限。
    3. 检查事件查看器:打开 “事件查看器” -> “Windows 日志” -> “应用程序”,查找来自 ASP.NET 或 W3SVC 的错误信息,这通常能给出崩溃的具体原因。

4. 404.0 - Not Found

  • 原因: 请求的资源(如一个页面或图片)不存在。
  • 解决方案:
    1. 检查请求的 URL 是否正确。
    2. 确认该文件是否存在于网站文件夹的正确位置。
    3. 检查 URL 重写规则是否错误地拦截了请求。
    4. 如果是 MVC 路由问题,检查 RouteConfig.cs 文件。

5. 如何查看详细的错误日志

IIS 的默认错误页面信息有限,查看详细日志是排查问题的关键。

  1. 查看自定义错误页:

    • 进入网站的 “错误页” 功能。
    • 双击一个具体的错误代码(如 500)。
    • 在右侧操作栏点击 “编辑功能设置”
    • 勾选 “详细错误”,现在当你访问出错的页面时,会看到包含详细堆栈跟踪、变量值等信息的技术性错误页面。仅用于测试环境!
  2. 查看 IIS 日志文件:

    • 日志文件默认位于 C:\inetpub\logs\LogFiles\ 目录下,按日期和网站名分文件夹。
    • 这些是纯文本文件,可以用记事本或 Notepad++ 打开。
    • 日志记录了每个请求的详细信息,包括客户端 IP、请求时间、方法、URI、协议、状态码、用户代理等,对于分析 404、500 等错误非常有用。
  3. 查看 Windows 事件日志:

    • 打开 “事件查看器”
    • 导航到 “Windows 日志” -> “应用程序”
    • 筛选来源为 “ASP.NET”“W3SVC” 的日志,这里记录了应用程序级别的严重错误。

希望这份详细的指南能帮助你成功部署和管理你的 ASP.NET 网站!