处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

博客指出IIS发布包含WCF服务的网站时,会出现HTTP错误500.21,原因是ASP.NET未成功注册到IIS中。解决办法是以管理员权限进入cmd,在对应路径下运行aspnet_regiis.exe -i命令,安装完毕后重启IIS。

错误描述:

IIS发布网站包含WCF服务时,报错如下

HTTP错误 500.21 - Internal Server Errorr

处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

 

原因:

ASP.NET没有成功注册到IIS中

 

解决方法:

管用员权限进入cmd命令提示符界面,执行命令:

cd C:\Windows\Microsoft.Net\Framework64\v4.0.30319

(32位操作系统路径是C:\Windows\Microsoft.NET\Framework\v4.0.30319)

运行:

aspnet_regiis.exe -i

 

安装完毕,重启IIS,解决。

你遇到的错误: ``` HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块ManagedPipelineHandler” ``` --- ## 🔍 错误原因分析 这个错误通常出现在 **IIS 托管的 ASP.NET 应用程序** 中,表明: > ✅ 请求进入 IIS > ❌ 但无法加载 ASP.NET 的托管管道模块(`ManagedPipelineHandler`)来处理请求 根本原因是:**ASP.NET 管道集成组件未正确注册到 IIS** 常见于以下情况: - 刚安装 Windows 或 IIS,未启用 ASP.NET 功能 - .NET Framework 安装不完整或损坏 - 使用了经典模式(Classic Mode)而非集成模式(Integrated Pipeline) - 注册 IIS 时遗漏了 ASP.NET 组件 --- ## ✅ 解决方案 ### ✅ 方法 1:使用 `aspnet_regiis.exe` 注册 ASP.NET 到 IIS(最常用) 这是解决该问题的核心步骤。 #### 步骤如下: 1. 打开 **管理员权限的命令提示符(CMD)** 2. 运行以下命令(根据你的系统位数和 .NET 版本选择): 对于 **.NET Framework 4.x on 64-bit Windows**: ```cmd %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i ``` 如果你是 32 位应用运行在 64 位系统上: ```cmd %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i ``` > ⚠️ 注意:路径中的版本号可能略有不同(如 `v4.0.30319` 是常见版本) #### 验证是否成功: 执行后你会看到类似输出: ``` Start installing ASP.NET (4.0.30319). ... Finished installing ASP.NET (4.0.30319). ``` 然后重启 IIS: ```cmd iisreset ``` --- ### ✅ 方法 2:通过“启用或关闭 Windows 功能”启用 IIS 和 ASP.NET #### 操作步骤: 1. 打开 **控制面板 → 程序 → 启用或关闭 Windows 功能** 2. 确保勾选以下项: ``` ✔ Internet Information Services └──✔ World Wide Web Services └──✔ Application Development Features ✔ ASP.NET ✔ .NET Extensibility ✔ ISAPI Extensions ✔ ISAPI Filters ``` 3. 点击“确定”,Windows 会自动安装缺失组件 4. 安装完成后再次运行 `aspnet_regiis -i` --- ### ✅ 方法 3:检查应用程序池的托管管道模式 必须使用 **集成模式(Integrated)** 而不是经典模式(Classic) #### 设置方法: 1. 打开 **IIS Manager** 2. 进入 **Application Pools** 3. 找到你的应用所用的应用程序池(如 DefaultAppPool) 4. 右键 → **高级设置** 5. 将 **托管管道模式(Managed Pipeline Mode)** 设置为: ``` Integrated ``` 6. 保存并重启应用池 > ❌ 经典模式不支持 `ExtensionlessUrlHandler-Integrated-4.0` 处理程序--- ### ✅ 方法 4:确认已安装 .NET Framework 4.x 即使你开发的是 .NET 4.5+ 应用,IIS 仍需要底层 `.NET Framework 4.x` 支持。 #### 检查方法: 运行以下命令查看已安装版本: ```powershell Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue | Where { $_.PSChildName -Match '^(?!S)\d+\.\d+' } | Select PSChildName, Version, Release ``` 确保至少有 `v4.0.30319` 存在。 👉 下载地址(微软官方离线安装包): [https://dotnet.microsoft.com/download/dotnet-framework](https://dotnet.microsoft.com/download/dotnet-framework) --- ### ✅ 方法 5:修复损坏的 IIS 配置(可选) 如果上述无效,尝试重置 IIS 配置: ```cmd iisreset /stop net start w3svc ``` 或者完全重置: ```cmd iisreset /reboot ``` --- ### ✅ 方法 6:检查 web.config 是否强制使用集成处理器 某些项目模板会在 `web.config` 中显式引用该 handler: ```xml <system.webServer> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> ``` > 如果你没有启用集成模式或未注册 ASP.NET,则此 handler 会失败。 ✅ 建议先确保环境正常后再保留这些配置。 --- ## 🧪 示例:验证是否修复成功 创建一个简单的 `test.aspx` 页面: ```aspx <%@ Page Language="C#" %> <html> <body> <h1>Hello from ASP.NET!</h1> <p>Time: <%= DateTime.Now.ToString() %></p> </body> </html> ``` 访问 `http://localhost/test.aspx` → 若能正常显示时间,则说明 ASP.NET 已正确注册。 --- ## ✅ 总结:解决流程图 ```text 出现 500.21 错误? ↓ 检查应用程序池是否为 "Integrated" 模式? → 否 → 改为 Integrated ↓ 是 运行 aspnet_regiis -i (以管理员身份) ↓ 重启 IIS(iisreset) ↓ 测试页面能否访问? ↓ 否 检查 Windows 功能是否启用 ASP.NET ↓ 重新安装 .NET Framework 或修复系统 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值