IIS 配置 .NET 网站完整指南
本指南将分为以下几个部分:

(图片来源网络,侵删)
- 准备工作: 确保你的系统环境满足要求。
- 安装 IIS 和 .NET 运行时: 在 Windows Server 或 Windows 10/11 上安装必要的组件。
- 部署网站: 将你的 .NET 应用程序文件放到 IIS 可访问的位置。
- 在 IIS 中创建网站: 配置网站的基本信息,如绑定、端口等。
- 配置应用程序池: 为你的网站选择合适的 .NET 版本。
- 高级配置与安全设置: 包括 URL 重写、权限设置等。
- 常见问题与排错: 解决配置过程中可能遇到的典型错误。
准备工作
在开始之前,请确保你已经具备以下条件:
- 一台 Windows 服务器或 Windows 10/11 操作系统。
- 一个已编译好的 .NET 网站项目,你可以通过 Visual Studio 发布项目,得到一个包含所有必要文件(如
.dll,.config,.html等)的文件夹。 - 管理员权限,因为安装 IIS 和进行配置都需要管理员身份。
安装 IIS 和 .NET 运行时
这是最关键的一步,你需要确保 IIS 和你的 .NET 应用程序所需的运行时都已安装。
在 Windows Server 上 (通过服务器管理器)
- 打开 服务器管理器。
- 点击 “管理” -> “添加角色和功能”。
- 在“开始之前”页面,点击 “下一步”。
- 在“选择安装类型”页面,选择 “基于角色或功能的安装”,点击 “下一步”。
- 在“选择目标服务器”页面,选择你的服务器,点击 “下一步”。
- 在“选择服务器角色”页面,展开 “Web 服务器 (IIS)”。
- 在弹出的对话框中点击 “添加功能”,然后点击 “下一步”。
- 在“Web 服务器角色”页面,你可以根据需要勾选功能,对于基础的 .NET 网站,确保以下角色服务被勾选:
- 应用程序开发:
- ASP.NET (这是必须的,支持 .NET Framework)
- .NET Extensibility (可选,用于支持 .NET 模块)
- 健康诊断:
- HTTP 日志记录 (强烈推荐,用于排查问题)
- 请求监控 (可选)
- 应用程序开发:
- 点击 “下一步”,直到最后一步,然后点击 “安装”。
- 安装完成后,系统会提示你安装成功。
在 Windows 10/11 上 (通过控制面板或 PowerShell)
通过控制面板 (推荐)
- 打开 “控制面板” -> “程序” -> “启用或关闭 Windows 功能”。
- 在列表中,找到并勾选 “Internet Information Services (IIS)”。
- 展开 IIS,然后展开 “万维网服务”。
- 勾选 “应用程序开发功能” 下的 ASP.NET。
- 勾选 “健康诊断” 下的 HTTP 日志记录。
- 点击 “确定”,等待 Windows 完成安装。
通过 PowerShell (最快捷)

(图片来源网络,侵删)
以管理员身份打开 PowerShell,然后运行以下命令:
# 安装 IIS 和 ASP.NET Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole, IIS-WebServer, IIS-CommonHttpFeatures, IIS-HttpErrors, IIS-HttpRedirect, IIS-ApplicationDevelopment, IIS-ASPNET, IIS-HealthAndDiagnostics, IIS-HttpLogging, IIS-Security, IIS-RequestFiltering, IIS-Performance -All
安装完成后,你可以在浏览器中访问 http://localhost,如果看到 IIS 欢迎页面,说明安装成功。
部署网站
你需要将你的 .NET 应用程序文件放到一个能让 IIS 访问的文件夹中。
- 选择一个位置: 我们会将网站文件放在
C:\inetpub\wwwroot目录下,为了更好的管理,建议为每个网站创建一个子文件夹,为 "MyWebApp" 创建C:\inetpub\wwwroot\MyWebApp。 - 复制文件: 将 Visual Studio 发布后生成的所有文件(包括
.dll,.config,.html,.css,web.config等)复制到这个文件夹中。
提示:
web.config文件是 IIS 和 .NET 应用程序的核心配置文件,在发布时,Visual Studio 通常会根据你的发布配置(如 Debug/Release, IIS/文件夹)自动生成一个合适的web.config。(图片来源网络,侵删)
在 IIS 中创建网站
我们将 IIS 指向我们刚刚部署的网站文件夹。
- 打开 IIS 管理器,你可以在开始菜单中搜索“IIS管理器”来找到它。
- 在左侧的“连接”面板中,右键点击 “站点”,选择 “添加网站...”。
- 填写网站信息:
- 网站名称: 给你的网站起一个名字,"MyWebApp",这个名字仅在 IIS 管理器中使用。
- 物理路径: 点击右侧的浏览按钮,选择你刚才存放网站文件的文件夹,
C:\inetpub\wwwroot\MyWebApp。 - 类型: 选择 “http”。
- IP 地址: 默认是 “全部未分配”,这意味着网站将监听服务器上所有的 IP 地址,如果你有多个 IP,可以指定一个。
- 端口: 默认是 80,80 端口已被占用(IIS 默认页),你需要修改一个未被占用的端口(如 8080)。
- 主机名: 留空,如果你想通过域名访问(如
www.mydomain.com),在这里填写域名,之后你需要在 DNS 中将域名解析到服务器的 IP 地址。
- 点击 “确定”。
你的网站已经创建成功了,你可以在 IIS 管理器的“站点”列表中看到它。
配置应用程序池
应用程序池是隔离网站运行环境的容器,决定了你的网站使用哪个 .NET 版本运行。
- 在 IIS 管理器左侧,点击 “应用程序池”。
- 在右侧列表中,找到与你网站名称相同的应用程序池("MyWebApp"),右键点击它,选择 “基本设置...”。
- .NET CLR 版本: 这是关键选项。
- 无托管代码: 如果你只托管静态网站(HTML, CSS, JS)。
- .NET CLR v4.0.30319: 这是 .NET Framework 的版本,如果你的项目是 .NET Framework (如 .NET 4.x, 3.5, 2.0),请选择此项。
- 无托管代码: 如果你使用的是 .NET Core / .NET 5+。注意:对于 .NET Core / .NET 5+,必须选择“无托管代码”,因为这些版本是自托管的,不依赖 IIS 的 CLR。
- 托管管道模式:
- 集成: 这是现代推荐的模式,性能更好,功能更全。
- 经典: 为了兼容旧版 ASP 应用程序而保留,对于新项目,尽量使用“集成”模式。
- 点击 “确定”。
对于 .NET Core / .NET 5+ 的重要提示:
- 确保
web.config文件中包含了正确的处理程序映射,通常在发布时 Visual Studio 会自动生成,它会将所有请求转发到aspnetcorev2_inprocess.dll(进程内模式) 或通过反向代理到 Kestrel 服务器 (进程外模式)。- 你还需要安装 .NET Hosting Bundle,以便 IIS 能够加载托管模块,可以从 Microsoft 官网下载:.NET 下载
高级配置与安全设置
设置默认文档
- 在 IIS 管理器中,选择你的网站。
- 双击 “默认文档” 功能。
- 在右侧,点击 “添加...”,输入你的首页文件名,
Default.aspx(对于 .NET Framework) 或index.html,点击“确定”。 - 使用“上移”和“下移”按钮,将你添加的文档移到列表最上方。
配置 URL 重写
对于 .NET Core / .NET 5+ 的 MVC 应用,通常需要 URL 重写来移除 URL 中的 index.aspx 或 index.html 后缀。
- 下载并安装 URL Rewrite 模块:IIS URL Rewrite Module
- 在 IIS 管理器中,选择你的网站。
- 双击 “URL 重写”。
- 在右侧操作栏,点击 “添加入站规则...”。
- 选择 “空规则”,然后点击“确定”。
- 配置规则:
- 名称:
Remove trailing slash。 - 匹配的 URL:
- 模式:
- 使用: 正则表达式
- 忽略大小写: 勾选
- 条件:
- 输入
{REQUEST_FILENAME} - 类型: 文件
- 检查如果为文件或目录: 取消勾选
- 输入
- 操作:
- 操作类型: 重定向
- 重定向 URL:
{R:1} - 重定向类型: 永久移动 (301)
- 名称:
- 点击“应用”。
设置目录权限
确保 IIS 的用户(通常是 IIS_IUSRS 或 NETWORK SERVICE)对你的网站文件夹有读取和执行权限。
- 右键点击你的网站文件夹,选择 “属性”。
- 切换到 “安全” 选项卡。
- 点击 “编辑...”,“添加...”。
- 输入
IIS_IUSRS,点击“检查名称”,确定”。 - 为
IIS_IUSRS用户赋予 “读取和执行”、“列出文件夹内容” 和 “读取” 权限。 - 点击“确定”。
常见问题与排错
问题 1: HTTP 错误 500.19 - 内部服务器错误
- 现象: 访问网站时提示此错误,并指出
web.config文件有配置问题。 - 原因: 通常是
web.config文件中的<system.webServer>节点下的配置有误,或者 IIS 没有安装对应的模块。 - 解决方法:
- 检查
web.config语法是否正确。 - 确保你在安装 IIS 时勾选了 ASP.NET 角色。
- 对于 .NET Core / .NET 5+,确保安装了 .NET Hosting Bundle。
- 检查
问题 2: HTTP 错误 403.14 - Forbidden
- 现象: 访问网站时提示“您无权查看此目录或页面”。
- 原因:
- 默认文档未配置: IIS 不知道该显示哪个文件。
- 目录权限问题: IIS 用户无法读取网站文件夹。
- 应用程序池身份验证问题。
- 解决方法:
- 检查 “默认文档” 是否已正确添加并排序。
- 检查网站文件夹的 安全权限,确保
IIS_IUSRS有读取权限。 - 尝试在应用程序池的“高级设置”中,将 “标识” 从
ApplicationPoolIdentity更改为LocalSystem(仅用于测试,不推荐生产环境使用),看问题是否解决。
问题 3: 502.5 - Process Failure
- 现象: 此错误专门发生在 .NET Core / .NET 5+ 应用上。
- 原因: Kestrel 服务器进程启动失败。
- 解决方法:
- 检查日志: 这是最好的排错方法,日志通常位于
C:\inetpub\logs\LogFiles\W3SVC1\目录下,查看最新的日志文件,找到具体的错误信息。 - 缺少依赖项: 确保服务器上安装了与你的应用程序相同的 .NET SDK 或 Runtime。
- 端口冲突: 检查
web.config中 Kestrel 使用的端口是否被其他程序占用。 - 权限问题: 确保应用程序池用户有权限访问你的网站文件夹和 .NET 运行时。
- 检查日志: 这是最好的排错方法,日志通常位于
问题 4: 无法访问,显示“服务不可用”
- 原因: 应用程序池没有启动。
- 解决方法: 在 IIS 管理器中,点击“应用程序池”,找到你的网站对应的应用程序池,确保其状态为 “启动”,如果已停止,右键点击并选择“启动”。
配置 IIS 运行 .NET 网站主要分为以下几步:
- 安装: 安装 IIS 和必要的组件(ASP.NET, URL Rewrite 等)。
- 部署: 将网站文件放到
inetpub\wwwroot下。 - 创建: 在 IIS 中创建网站,指定物理路径和绑定信息。
- 配置: 设置应用程序池的 .NET 版本(.NET Framework 选 CLR 版本,.NET Core/5+ 选“无托管代码”)。
- 安全: 设置正确的目录权限和默认文档。
- 排错: 学会查看 IIS 日志和事件查看器,是解决问题的关键。
遵循以上步骤,你应该能够成功配置并运行你的 .NET 网站,如果在某个环节遇到问题,请仔细检查对应的排错部分。

