【问题标题】:How to fix: Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list如何修复:处理程序“PageHandlerFactory-Integrated”的模块列表中有一个错误的模块“ManagedPipelineHandler”
【发布时间】:2011-10-14 08:43:02
【问题描述】:

我正在配置一个 MVC 3 项目以在本地安装 IIS 并遇到以下 500 错误:

处理程序“PageHandlerFactory-Integrated”有一个坏模块 “ManagedPipelineHandler”在其模块列表中。

事实证明,这是因为 ASP.Net 没有完全安装 IIS,即使我在“添加功能”对话框中选中了该框。为了解决这个问题,我只是在命令提示符下运行了以下命令

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

如果我使用的是 32 位系统,它会如下所示:

%windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i

我的问题是,有没有办法在 Windows 7 机器上安装 IIS 以使用 .NET 4.0 (MVC 3) 而无需采取这一额外步骤?

【问题讨论】:

  • 这个问题实际上解决了我的问题。如果可以的话,我会回答这个问题作为答案。 :)
  • 是的,问题的描述也解决了我的问题。谢谢:-)

标签: asp.net-mvc iis-7 configuration asp.net-4.0


【解决方案1】:

如果你想在不安装 MVC 的情况下部署 MVC 应用程序,可以deploy the MVC DLL's with your application。这绕过了安装 MVC 3。您可以使用某些 .Net 4.0 命名空间中的功能,而无需使用类似的方法安装 .Net。

【讨论】:

  • 用 iis 注册 asp.net 与是否存在 mvc 无关,是的,您可以在 bin 文件夹中包含所需的 dll,但如果 iis 无法识别 asp 文件,则没有太多dll可以做
【解决方案2】:

事实证明,这是因为 ASP.Net 没有完全安装 IIS,即使我在“添加功能”对话框中选中了该框。为了解决这个问题,我只是在命令提示符下运行了以下命令

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

如果我使用的是 32 位系统,它会如下所示:

%windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i

记住以管理员身份运行命令提示符(CTRL+SHIFT+ENTER

【讨论】:

  • 您可能有“Aspnet_regiis.exe 未被识别为内部或外部命令、可运行程序或批处理文件。” 错误。在这种情况下,您的可执行文件不是来自 .NET 4.0 文件夹,而是来自 2.0 文件夹(请参阅下面的答案)
  • 在一些站点中,我读到我们需要运行 aspnet_regiis.exe 但没有人解释该参数是必需的,否则什么也不会发生。
  • 很好的简单答案。我知道这是一个糟糕的安装,不知道如何纠正它。
  • 请注意,如果您使用的是 Windows Server 2012,则需要通过“管理”>“添加角色和功能”>“功能”进行此操作。在我的情况下,IIS8 需要安装/激活 ASP.NET 4.5。
  • 记得以管理员身份运行
【解决方案3】:

接受的答案是正确的,但有时您会收到“Aspnet_regiis.exe 无法识别为内部或外部命令、可运行程序或批处理文件。”错误消息。

要解决它,请尝试以下操作:

  1. 确保您的 .NET 4.0 安装未损坏(运行安装程序并“修复”它)。它也有可能根本没有安装在您的机器上。

  2. 如果您确定没有安装 .NET 4.0 并希望将其作为 .NET 2.0 运行,请尝试this

如果您看到消息“Aspnet_regiis.exe 未被识别为 内部或外部命令,可运行程序或批处理文件。",开关 到 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Aspnet_regiis.exe -i 在命令提示符下。

【讨论】:

  • Aspnet_regiis.exe -i 修复了我在 Win Server 2008 IIS7 上的问题。
【解决方案4】:

要解决这个问题,请尝试repair the .net framework 4,然后运行命令

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

【讨论】:

    【解决方案5】:

    我为 .Net 4 添加了 ISAPI/CGI 路径。这并没有解决问题。 因此,我随后对 .Net V4(客户端和扩展)安装进行了修复。这要求重新启动。这为我解决了问题。

    【讨论】:

      【解决方案6】:

      我遇到了这个问题,发现删除以下文件夹有帮助,即使是非 Express edition.Express:

      C:\Users\<user>\Documents\IISExpress

      【讨论】:

        【解决方案7】:

        这些都不适合我。因此,当我将各种应用程序池与有效与无效的应用程序池进行比较时,我必须进入应用程序池的高级设置,然后设置

        启用 32 位应用程序 = true

        然后它工作正常!

        【讨论】:

          【解决方案8】:

          我在使用 Windows Server 2012 时遇到了类似的问题,在服务器管理器中安装“Application Server”功能解决了这个问题。

          【讨论】:

            【解决方案9】:

            -使用应用程序初始化功能 -由于配置继承而请求错误的页面(.asp)

            500.21 只会发生在第一个用户连接上。后续连接有效。

            通过更正.NET网站上的applicationInitialization url集合解决。

            【讨论】:

              【解决方案10】:

              我还会首先检查显而易见的:应用程序池设置为正确的框架,并且您的 IIS 应用程序实际上指向您放置文件的文件夹

              【讨论】:

              • 如此明显……但又如此容易被忽视。谢谢!
              • 这对我来说是个问题。显然,我以某种方式取消了此设置,或者将其设置为“无托管代码”。将其切换回 v4.0 可以加载我的网站。
              【解决方案11】:

              要在 Windows 8.1 Professional 机器上解决此问题,请执行以下操作。

              1. 安装 Web 平台安装程序。 http://www.microsoft.com/web/downloads/platform.aspx

              2. 在 Web 平台安装程序中安装 ASP.NET 4.5(此功能有一个依赖项)。

              如果您只是从最流行的答案中尝试上述 cmd 提示命令,您将收到以下错误/警告消息:

              C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440 用于在本地计算机上安装和卸载 ASP.NET 的管理实用程序。 版权所有 (C) 微软公司。版权所有。 开始安装 ASP.NET (4.0.30319.33440)。 此版本的操作系统不支持此选项。管理员 安装/卸载带有 IIS8 的 ASP.NET 4.5 应使用“Turn Win dows Features On/Off”对话框、服务器管理器管理工具或 dism.e xe 命令行工具。更多详情请见http://go.microsoft.com/fwlin k/?LinkID=216771。 已完成安装 ASP.NET (4.0.30319.33440)。

              【讨论】:

                【解决方案12】:

                我遇到了同样的问题,我的案例处理程序在两个地方:

                <system.web>
                ...
                <httpHandlers>
                 <add verb="*" path="*.ashx" type="ApplicArt.Extranet2.Controller.FrontController, ApplicArt.Extranet2.Web.UI" />
                  </httpHandlers>
                </system.web>
                
                <system.webServer>
                <handlers>
                   ...
                  <add name="FrontController" verb="*" path="*.ashx" type="ApplicArt.Extranet2.Controller.FrontController, ApplicArt.Extranet2.Web.UI"/>
                </handlers>
                </system.webServer>
                

                当我从 [system.webServer] 中删除我的处理程序时,我的问题就消失了。

                【讨论】:

                  【解决方案13】:

                  我曾尝试在命令提示符下执行 aspnet_regiis,但得到的答案是我没有管理员权限。 然后,经过更多谷歌搜索并寻找解决方案后,我尝试右键单击 cmd 并以管理员身份运行它。当对话框出现时确认是,再次运行 aspnet_iis 蚂蚁就像一个魅力。 简而言之: 1.检查app_pool中的.NET框架 2.以管理员身份运行cmd 3.运行aspnet_regiis -i

                  【讨论】:

                    【解决方案14】:

                    我遇到了同样的问题,我的解决方案是:

                    转到“打开或关闭 Windows 功能”> Internet 信息服务> 万维网服务> 应用程序开发功能>启用 ASP.NET 4.5

                    【讨论】:

                    • 这就像一个魅力,但有什么理由我不想在生产服务器上这样做,因为它是一个“应用程序开发功能”?
                    • 我对该功能了解不多,无法评论在生产环境中使用它。但是我确实发现这个链接可能会有所帮助technet.microsoft.com/en-us/library/hh831475.aspx。它还包含一个命令,您可以使用该命令通过命令提示符安装 IIS 和 ASP.NET 模块,这可能更适合您的生产需求。
                    【解决方案15】:

                    在某些情况下,出现此错误是因为用于 ASP .NET 的 Microsoft .NET Framework 4.0 配置已损坏,如果在 Visual Studio 2010 或 Microsoft SQL Server 2008 之前安装了 Microsoft Visual Studio 2012,则可能会发生这种情况。

                    在尝试了不同的事情后,我得出了结论,通过运行以下命令来修复您的 .Net 安装。欲了解更多信息,请点击链接。

                    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SetupCache\v4.5.51209\setup.exe /repair /x86 /x64 /ia64 /norestart
                    

                    https://msdn.microsoft.com/en-us/library/hh168535(v=nav.80).aspx

                    【讨论】:

                      【解决方案16】:

                      错误:处理程序“PageHandlerFactory-Integrated”的模块列表中有一个错误模块“ManagedPipelineHandler”

                      我找到了解决此问题的文章,只需在命令提示符下运行以下命令:

                      %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
                      

                      如果系统是 32 位的,它应该是这样的:

                      %windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i
                      

                      但是,当我尝试使用命令提示符执行这些命令时,我收到以下错误/警告消息:

                      C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440 用于在本地计算机上安装和卸载 ASP.NET 的管理实用程序。版权所有 (C) 微软公司。版权所有。开始安装 ASP.NET (4.0.30319.33440)。此版本的操作系统不支持此选项。管理员应该使用“打开/关闭 Windows 功能”对话框、服务器管理器管理工具或 dism.exe 命令行工具来安装/卸载带有 IIS8 的 ASP.NET 4.5。更多详情请查看http://go.microsoft.com/fwlink/?LinkID=216771。已完成安装 ASP.NET (4.0.30319.33440)。**

                      要在 Windows 8.1 上解决此问题,我建议执行以下操作。

                      解决方案:

                      转到:打开或关闭 Windows 功能 -> Internet 信息服务 -> 万维网服务 -> 应用程序开发功能 -> 启用 ASP.NET 4.5

                      这应该可以解决问题。

                      【讨论】:

                      • 我遇到了同样的问题。谢谢!对我来说,我必须启用“ASP.NET 4.6”。
                      【解决方案17】:

                      要解决该问题,请尝试修复 .net framework 4,然后运行命令

                      %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
                      

                      enter image description here

                      【讨论】:

                      • 在发布自己的答案之前,您是否阅读了所有发布的答案?
                      【解决方案18】:

                      在尝试将应用程序池从经典切换到集成时,我在其中一个网络服务器上遇到了这个问题。它在我的其他两个网络服务器上运行良好,而不仅仅是这个。它是 Server 2012,所以你不能做 aspnet_regiis 并且没有 setupcache 文件夹来尝试修复。功能下的所有设置都正确。

                      通过 %windir%\system32\inetsrv\config\applicationHost.config 后,我发现了一个关键缺失位。在我的非工作中缺少以下两行:

                              <add name="ManagedEngineV4.0_32bit" image="C:\Windows\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
                              <add name="ManagedEngineV4.0_64bit" image="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
                      

                      添加它们后,一切都很好。

                      【讨论】:

                        【解决方案19】:
                        1. 运行cmd

                        2. Aspnet_regiis.exe从以下位置拖放到命令提示符中:

                          C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
                          
                        3. 输入-i(例如Aspnet_regiis.exe -i

                        4. 回车

                        5. 等待进程完成

                        祝你好运!

                        【讨论】:

                          猜你喜欢
                          • 2012-01-29
                          • 1970-01-01
                          • 2013-07-02
                          • 2013-06-13
                          • 2018-01-10
                          • 2011-09-06
                          • 1970-01-01
                          • 2014-01-21
                          • 2020-04-13
                          相关资源
                          最近更新 更多