总览:配置 IIS 运行 ASP.NET 网站的完整步骤

整个过程可以分为以下几个主要阶段:

iis配置asp.net网站
(图片来源网络,侵删)
  1. 安装必要组件:确保安装了 IIS 和 ASP.NET 运行时。
  2. 配置网站:在 IIS 中创建一个新的网站,并设置其基本属性。
  3. 配置应用程序池:为网站指定一个合适的 .NET 版本的应用程序池。
  4. 设置默认文档和目录权限:配置网站的首页和确保 IIS 用户有权限访问文件。
  5. 配置 ASP.NET:处理 ASP.NET 的核心配置,如 web.config 文件。
  6. 防火墙设置:确保 Windows 防火墙允许外部流量访问。
  7. 测试网站:在本地和远程访问网站进行验证。

详细步骤指南

第一步:安装必要组件

在开始之前,你的服务器必须安装 IIS 和支持 ASP.NET 的模块,最简单的方法是使用 "服务器管理器"。

  1. 打开 服务器管理器 (Server Manager)。

  2. 点击右上角的 “添加角色和功能” (Add Roles and Features)。

  3. 在向导的 “开始之前” 页面,点击 “下一步”

    iis配置asp.net网站
    (图片来源网络,侵删)
  4. “安装类型” 页面,选择 “基于角色或功能的安装”,然后点击 “下一步”

  5. “服务器选择” 页面,选择你的本地服务器,然后点击 “下一步”

  6. “服务器角色” 页面,向下滚动并勾选 “Web 服务器 (IIS)”

  7. 当系统提示你添加必需的功能时,点击 “添加必需的功能”,然后点击 “下一步”

    iis配置asp.net网站
    (图片来源网络,侵删)
  8. “功能” 页面,通常不需要额外添加,直接点击 “下一步”

  9. “Web 服务器角色 (IIS)” 页面,点击 “下一步”

  10. “角色服务” 页面,这是最关键的一步,你需要确保以下服务被勾选:

    • 常见 HTTP 功能
      • [x] 默认文档
      • [x] HTTP 重定向
      • [x] HTTP 错误
      • [x] (用于托管 HTML, CSS, JS, 图片等)
    • 应用程序开发
      • [x] ASP.NET (这是核心,勾选它通常会自动勾选下面的 .NET Framework 版本)
      • [x] .NET Extensibility (可选,但推荐)
      • [x] ASP (如果需要支持传统 ASP 页面)
    • 安全性 (根据你的需求选择)
      • [x] 请求筛选 (推荐,用于增强安全性)
    • 管理工具
      • [x] IIS 管理控制台 (让你能管理 IIS)
      • [x] IIS 管理服务 (允许远程管理 IIS)
  11. 点击 “下一步”,然后在 “确认” 页面点击 “安装”

  12. 等待安装完成,完成后,点击 “关闭”

IIS 和 ASP.NET 已经安装好了,你可以通过在浏览器中访问 http://localhost 来测试 IIS 是否正常运行,你应该能看到 IIS 的欢迎页面。

第二步:配置网站

假设你已经将你的 ASP.NET 网站文件(一个通过 Visual Studio 发布的文件夹)放置在服务器的某个位置,D:\MyWebApp

  1. 打开 IIS 管理器,你可以通过在开始菜单中搜索 "Internet Information Services (IIS) Manager" 来找到它。

  2. 在左侧的 “连接” 窗格中,展开你的服务器节点。

  3. 右键点击 “网站” (Sites),然后选择 “添加网站...” (Add Website...)。

  4. 在弹出的窗口中填写以下信息:

    • 网站名称:给你的网站起一个唯一的名字,MyWebApp
    • 物理路径:点击浏览,选择你的网站文件所在的文件夹,D:\MyWebApp
    • 类型:保持默认的 “网站”
    • 端口:默认是 80,如果你的 80 端口已被占用,可以改为其他端口(如 8080),但访问时需要在 IP 地址后加上端口号,http://yourserverIP:8080
    • IP 地址:默认是 “全部未分配” (All Unassigned),这意味着网站将监听服务器上所有可用的 IP 地址,如果你只想通过特定 IP 访问,可以在这里指定。
    • 主机名:如果你有域名,可以在这里填写(www.mydomain.com),如果暂时没有,留空即可。
  5. 点击 “确定”

你的网站已经创建并出现在 IIS 管理器的网站列表中。

第三步:配置应用程序池

应用程序池是运行网站代码的独立进程,你需要确保它使用的是正确的 .NET 版本。

  1. 在 IIS 管理器中,展开服务器节点,然后点击 “应用程序池” (Application Pools)。

  2. 你会看到一个名为 MyWebApp(与你网站名称相同)的应用程序池。

  3. 右键点击这个应用程序池,选择 “基本设置...” (Basic Settings...)。

  4. .NET CLR 版本 下拉菜单中,选择你的项目所需的 .NET 版本,对于新的项目,通常是 “无托管代码” (No Managed Code),因为 .NET Core/.NET 5+ 是自托管的,对于传统的 .NET Framework 项目(如 .NET 4.8),请选择对应的版本,如 .NET CLR v4.0.30319

  5. 点击 “确定”

注意:对于 .NET Core / .NET 5+ 应用,最佳实践是创建一个新的、无托管代码的应用程序池,并将你的网站指向它。

第四步:设置默认文档和目录权限

  1. 默认文档

    • 在 IIS 管理器中,选中你的网站(在“网站”下)。
    • 在中间的 “操作” 窗格中,双击 “默认文档” (Default Documents)。
    • 你会看到 Default.aspx, Default.htm, index.html 等列表,确保你的首页(如 Default.aspxindex.aspx)在列表中,并且可以通过 “上移” (Move up) 按钮将其移到第一位。
  2. 目录权限

    • 这是非常重要的一步,IIS 默认以 IIS_IUSRS 组的身份运行应用程序,这个用户需要读取你网站文件夹的权限。
    • 右键点击你的网站文件夹(D:\MyWebApp),选择 “属性” (Properties) -> “安全” (Security) 选项卡。
    • 点击 “编辑” (Edit) -> “添加” (Add)。
    • 在输入框中输入 IIS_IUSRS,然后点击 “检查名称”,它会自动补全,点击 “确定”
    • 在用户列表中,选中 IIS_IUSRS,然后在下方的权限列表中,勾选 “读取” (Read) 和 “读取和执行” (Read & execute),如果你的网站需要写入文件(如上传功能),还需要勾选 “写入” (Write)。
    • 点击 “确定” 保存所有更改。

第五步:配置 ASP.NET

ASP.NET 的主要配置文件是 web.config,它应该位于你的网站根目录下。web.config 文件包含了数据库连接字符串、应用程序设置、URL 重写规则等。

  1. 确保你的网站根目录下有 web.config 文件。
  2. 你可以直接在 IIS 管理器中编辑它:选中你的网站,在中间窗格双击 “配置编辑器” (Configuration Editor),在节下拉框中选择 system.web/compilation,可以检查 debug 模式是否为 false(在生产环境中必须为 false)。
  3. 更常见的做法是使用 Visual Studio 或文本编辑器(如 VS Code)直接编辑 web.config 文件。

第六步:防火墙设置

为了让外部用户能访问你的网站,需要确保 Windows 防火墙允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量。

  1. 打开 “高级安全 Windows Defender 防火墙” (可以通过在开始菜单搜索找到)。
  2. 在左侧,点击 “入站规则” (Inbound Rules)。
  3. 在右侧的规则列表中,查找名为 “World Wide Web Services (HTTP Traffic-In)” 的规则。
  4. 确保这条规则被 “启用” (Enabled)。
  5. 如果找不到,你可以创建一个新规则:
    • 点击右侧 “新建规则...” (New Rule...)。
    • 选择 “端口”,点击下一步。
    • 选择 “TCP”,并在 “特定本地端口” 中输入 80, 443,点击下一步。
    • 选择 “允许连接”,点击下一步。
    • 选择适用的配置文件(域、专用、公用),通常全选,点击下一步。
    • 为规则命名,Allow HTTP/HTTPS,然后点击完成。

第七步:测试网站

  1. 本地测试

    • 在服务器的浏览器中访问 http://localhosthttp://localhost:端口号,你应该能看到你的 ASP.NET 网站的首页。
  2. 远程测试

    • 在另一台电脑上,打开浏览器,访问服务器的 IP 地址或域名,http://你的服务器IPhttp://你的服务器IP:8080
    • 如果无法访问,请检查:
      • 服务器防火墙是否已正确配置。
      • 服务器上的“远程桌面”或“文件和打印机共享”等防火墙规则是否阻止了访问。
      • 网站的 IP 地址和端口绑定是否正确。
      • 应用程序池是否正在运行(在 IIS 管理器中的应用程序池列表中查看状态)。

常见问题与排查

  • HTTP 错误 403.14 - Forbidden
    • 原因:IIS 找不到默认文档。
    • 解决:检查 “默认文档” 功能,并确保你的首页文件(如 Default.aspx)在列表中且顺序正确。
  • HTTP 错误 500.19 - Internal Server Error
    • 原因:通常是 web.config 文件有语法错误,或者 IIS 无法读取该文件。
    • 解决:检查 web.config 的 XML 语法是否正确,确保 IIS_IUSRS 用户对网站文件夹有 “读取” 权限。
  • HTTP 错误 502.2 - Bad Gateway
    • 原因:通常发生在使用反向代理(如 ARR)或 FastCGI 时,表示上游应用程序池或进程未能响应。
    • 解决:检查应用程序池的状态,如果它已停止,尝试重启它,对于 .NET Core 应用,可能是 dotnet 进程崩溃,需要检查事件查看器中的日志。
  • 页面无法显示,但 IIS 欢迎页可以
    • 原因:网站绑定有问题,或者应用程序池崩溃。
    • 解决:检查网站的 “绑定” (Bindings) 设置是否正确,尝试 “回收” (Recycle) 或 “停止/启动” 应用程序池。

遵循以上步骤,你应该能够成功地在 IIS 上配置并运行你的 ASP.NET 网站,祝你部署顺利!