如何修复:处理程序“PageHandlerFactory-Integrated”在其模块列表中具有一个坏的模块“ManagedPipelineHandler”。

545

我正在配置一个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),而无需进行额外步骤?


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

953

原来这是因为虽然我在“添加功能”对话框中勾选了 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未被识别为内部或外部命令、可执行程序或批处理文件”的错误。在这种情况下,你需要从2.0文件夹中获取可执行文件,而不是从.NET 4.0文件夹中获取(请参见下面的答案)。 - Nikita R.
在一些网站上,我读到需要运行aspnet_regiis.exe,但没有人解释参数是必需的,否则什么也不会发生。 - Pimenta
非常简单的答案。我知道这是一个糟糕的安装,但不知道如何纠正它。 - elcool
请注意,如果您使用的是Windows Server 2012,则需要通过“管理”>“添加角色和功能”>“功能”来完成此操作。在我的情况下,需要安装/激活ASP.NET 4.5才能使用IIS8。 - Stark
5
请记得以管理员身份运行。 - Reid Evans
在我这里可以在Windows 7上工作。看起来一旦您在IIS上启用了asp.net功能,除非运行此命令,否则它们不会立即起作用.. - Ram

17
被接受的答案是正确的,但有时您会收到“Aspnet_regiis.exe未被识别为内部或外部命令、可执行程序或批处理文件。”错误消息。
要解决此问题,请尝试以下操作:
  1. 确保您的.NET 4.0安装没有损坏(运行安装程序并“修复”它)。也有可能您的机器根本没有安装此版本。

  2. 如果您确定您没有安装.NET 4.0并想要将其作为.NET 2.0运行,请尝试此项操作

  

如果您看到“ Aspnet_regiis.exe未被识别为内部或外部命令、可执行程序或批处理文件。”的消息,请切换到命令提示符中的C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Aspnet_regiis.exe -i


Aspnet_regiis.exe -i 在 Win Server 2008 IIS7 上解决了我的问题。 - VSB

11

错误: 处理程序“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) Microsoft Corporation。保留所有权利。开始安装ASP.NET(4.0.30319.33440)。此选项不支持此操作系统的版本。管理员应改为使用“打开/关闭Windows功能”对话框、服务器管理工具或dism.exe命令行工具安装/卸载ASP.NET 4.5与IIS8。有关详细信息,请参见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”。 - Krisztián Balla
我遇到了同样的问题,不得不启用“ASP.NET 4.7”。 - ElMatador

9
为了解决这个问题,请尝试修复.NET Framework 4并运行命令。
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

4

首先,我建议检查一下显而易见的问题:应用程序池是否设置为正确的框架,并且你的IIS应用程序实际上指向了你放置文件的文件夹。


如此明显...却很容易被忽略。谢谢! - Paul Lemke
这对我来说是个问题。显然,某种方式我取消了它或者它被设置为“无托管代码”。将其切换回v4.0后,我的网站得以加载。 - redOctober13

3
我已经为.Net 4添加了ISAPI/CGI路径,但仍然无法解决问题。然后我对.Net V4(Client和Extended)进行了修复,并要求重新启动。这对我有帮助。

3

如果您想不安装MVC应用程序就可以部署一个MVC应用程序,那么您可以将MVC DLL与您的应用程序一起部署。这样可以解决安装MVC 3的问题。使用类似的方法,您可以在不安装.NET的情况下使用一些.NET 4.0名称空间中的功能。


4
将asp.net与iis注册并没有与mvc是否存在有关,是的,您可以将所需的dll文件放入bin文件夹中,但如果iis无法识别asp文件,则dll文件无法发挥太大作用。 - Shashank Shekhar

2
要在Windows 8.1 Professional上解决此问题,请按照以下步骤操作:
  1. 安装Web Platform Installer。 http://www.microsoft.com/web/downloads/platform.aspx

  2. 在Web Platform Installer中安装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) Microsoft Corporation。保留所有权利。 开始安装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)。

2

我曾经遇到过同样的问题,我的解决方案是:

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


这个功能非常好用,但是如果它是一个“应用程序开发功能”,那么我在生产服务器上为什么不想使用它呢? - Philip Stratford
我对于在生产环境中使用该功能的评论不够充分。但是,我找到了这个链接可能会有所帮助 https://technet.microsoft.com/en-us/library/hh831475.aspx。它还包含一个命令,您可以通过命令提示符安装IIS和ASP.NET模块,这可能更适合您的生产需求。 - Ryan Burbidge

2

我尝试在命令提示符中执行aspnet_regiis,但是收到了没有管理员权限的回答。然后,经过更多的搜索和寻找解决方案,我尝试右键单击cmd并以管理员身份运行它。确认对话框时选择“是”,再次运行aspnet_iis,就像魔术般地工作了。 简而言之: 1. 检查应用程序池中的.NET框架 2. 以管理员身份运行cmd 3. 运行aspnet_regiis -i


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接