总览:配置 IIS 运行 ASP.NET 网站的完整步骤
整个过程可以分为以下几个主要阶段:

- 安装必要组件:确保安装了 IIS 和 ASP.NET 运行时。
- 配置网站:在 IIS 中创建一个新的网站,并设置其基本属性。
- 配置应用程序池:为网站指定一个合适的 .NET 版本的应用程序池。
- 设置默认文档和目录权限:配置网站的首页和确保 IIS 用户有权限访问文件。
- 配置 ASP.NET:处理 ASP.NET 的核心配置,如
web.config文件。 - 防火墙设置:确保 Windows 防火墙允许外部流量访问。
- 测试网站:在本地和远程访问网站进行验证。
详细步骤指南
第一步:安装必要组件
在开始之前,你的服务器必须安装 IIS 和支持 ASP.NET 的模块,最简单的方法是使用 "服务器管理器"。
-
打开 服务器管理器 (Server Manager)。
-
点击右上角的 “添加角色和功能” (Add Roles and Features)。
-
在向导的 “开始之前” 页面,点击 “下一步”。
(图片来源网络,侵删) -
在 “安装类型” 页面,选择 “基于角色或功能的安装”,然后点击 “下一步”。
-
在 “服务器选择” 页面,选择你的本地服务器,然后点击 “下一步”。
-
在 “服务器角色” 页面,向下滚动并勾选 “Web 服务器 (IIS)”。
-
当系统提示你添加必需的功能时,点击 “添加必需的功能”,然后点击 “下一步”。
(图片来源网络,侵删) -
在 “功能” 页面,通常不需要额外添加,直接点击 “下一步”。
-
在 “Web 服务器角色 (IIS)” 页面,点击 “下一步”。
-
在 “角色服务” 页面,这是最关键的一步,你需要确保以下服务被勾选:
- 常见 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)
- 常见 HTTP 功能
-
点击 “下一步”,然后在 “确认” 页面点击 “安装”。
-
等待安装完成,完成后,点击 “关闭”。
IIS 和 ASP.NET 已经安装好了,你可以通过在浏览器中访问 http://localhost 来测试 IIS 是否正常运行,你应该能看到 IIS 的欢迎页面。
第二步:配置网站
假设你已经将你的 ASP.NET 网站文件(一个通过 Visual Studio 发布的文件夹)放置在服务器的某个位置,D:\MyWebApp。
-
打开 IIS 管理器,你可以通过在开始菜单中搜索 "Internet Information Services (IIS) Manager" 来找到它。
-
在左侧的 “连接” 窗格中,展开你的服务器节点。
-
右键点击 “网站” (Sites),然后选择 “添加网站...” (Add Website...)。
-
在弹出的窗口中填写以下信息:
- 网站名称:给你的网站起一个唯一的名字,
MyWebApp。 - 物理路径:点击浏览,选择你的网站文件所在的文件夹,
D:\MyWebApp。 - 类型:保持默认的 “网站”。
- 端口:默认是 80,如果你的 80 端口已被占用,可以改为其他端口(如 8080),但访问时需要在 IP 地址后加上端口号,
http://yourserverIP:8080。 - IP 地址:默认是 “全部未分配” (All Unassigned),这意味着网站将监听服务器上所有可用的 IP 地址,如果你只想通过特定 IP 访问,可以在这里指定。
- 主机名:如果你有域名,可以在这里填写(
www.mydomain.com),如果暂时没有,留空即可。
- 网站名称:给你的网站起一个唯一的名字,
-
点击 “确定”。
你的网站已经创建并出现在 IIS 管理器的网站列表中。
第三步:配置应用程序池
应用程序池是运行网站代码的独立进程,你需要确保它使用的是正确的 .NET 版本。
-
在 IIS 管理器中,展开服务器节点,然后点击 “应用程序池” (Application Pools)。
-
你会看到一个名为
MyWebApp(与你网站名称相同)的应用程序池。 -
右键点击这个应用程序池,选择 “基本设置...” (Basic Settings...)。
-
在 .NET CLR 版本 下拉菜单中,选择你的项目所需的 .NET 版本,对于新的项目,通常是 “无托管代码” (No Managed Code),因为 .NET Core/.NET 5+ 是自托管的,对于传统的 .NET Framework 项目(如 .NET 4.8),请选择对应的版本,如 .NET CLR v4.0.30319。
-
点击 “确定”。
注意:对于 .NET Core / .NET 5+ 应用,最佳实践是创建一个新的、无托管代码的应用程序池,并将你的网站指向它。
第四步:设置默认文档和目录权限
-
默认文档:
- 在 IIS 管理器中,选中你的网站(在“网站”下)。
- 在中间的 “操作” 窗格中,双击 “默认文档” (Default Documents)。
- 你会看到
Default.aspx,Default.htm,index.html等列表,确保你的首页(如Default.aspx或index.aspx)在列表中,并且可以通过 “上移” (Move up) 按钮将其移到第一位。
-
目录权限:
- 这是非常重要的一步,IIS 默认以
IIS_IUSRS组的身份运行应用程序,这个用户需要读取你网站文件夹的权限。 - 右键点击你的网站文件夹(
D:\MyWebApp),选择 “属性” (Properties) -> “安全” (Security) 选项卡。 - 点击 “编辑” (Edit) -> “添加” (Add)。
- 在输入框中输入
IIS_IUSRS,然后点击 “检查名称”,它会自动补全,点击 “确定”。 - 在用户列表中,选中
IIS_IUSRS,然后在下方的权限列表中,勾选 “读取” (Read) 和 “读取和执行” (Read & execute),如果你的网站需要写入文件(如上传功能),还需要勾选 “写入” (Write)。 - 点击 “确定” 保存所有更改。
- 这是非常重要的一步,IIS 默认以
第五步:配置 ASP.NET
ASP.NET 的主要配置文件是 web.config,它应该位于你的网站根目录下。web.config 文件包含了数据库连接字符串、应用程序设置、URL 重写规则等。
- 确保你的网站根目录下有
web.config文件。 - 你可以直接在 IIS 管理器中编辑它:选中你的网站,在中间窗格双击 “配置编辑器” (Configuration Editor),在节下拉框中选择
system.web/compilation,可以检查debug模式是否为false(在生产环境中必须为false)。 - 更常见的做法是使用 Visual Studio 或文本编辑器(如 VS Code)直接编辑
web.config文件。
第六步:防火墙设置
为了让外部用户能访问你的网站,需要确保 Windows 防火墙允许 HTTP (端口 80) 和 HTTPS (端口 443) 流量。
- 打开 “高级安全 Windows Defender 防火墙” (可以通过在开始菜单搜索找到)。
- 在左侧,点击 “入站规则” (Inbound Rules)。
- 在右侧的规则列表中,查找名为 “World Wide Web Services (HTTP Traffic-In)” 的规则。
- 确保这条规则被 “启用” (Enabled)。
- 如果找不到,你可以创建一个新规则:
- 点击右侧 “新建规则...” (New Rule...)。
- 选择 “端口”,点击下一步。
- 选择 “TCP”,并在 “特定本地端口” 中输入
80, 443,点击下一步。 - 选择 “允许连接”,点击下一步。
- 选择适用的配置文件(域、专用、公用),通常全选,点击下一步。
- 为规则命名,
Allow HTTP/HTTPS,然后点击完成。
第七步:测试网站
-
本地测试:
- 在服务器的浏览器中访问
http://localhost或http://localhost:端口号,你应该能看到你的 ASP.NET 网站的首页。
- 在服务器的浏览器中访问
-
远程测试:
- 在另一台电脑上,打开浏览器,访问服务器的 IP 地址或域名,
http://你的服务器IP或http://你的服务器IP:8080。 - 如果无法访问,请检查:
- 服务器防火墙是否已正确配置。
- 服务器上的“远程桌面”或“文件和打印机共享”等防火墙规则是否阻止了访问。
- 网站的 IP 地址和端口绑定是否正确。
- 应用程序池是否正在运行(在 IIS 管理器中的应用程序池列表中查看状态)。
- 在另一台电脑上,打开浏览器,访问服务器的 IP 地址或域名,
常见问题与排查
- 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 网站,祝你部署顺利!
