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

说实话,我已经试图在IIS上转变一个肮脏的诡计,就在我以为我要逃避它,我意识到我的解决方法不起作用。 以下是我试图做的事情:

1)我有ASP.NET应用程序,它有Preloader类inheritanceIProcessHostPreloadClient ,并执行Preload方法实现中的所有重要的初始化(应用程序是复杂的,它是一个巨大的系统的一部分,所以它需要大约2分钟build立到所有必要的连接服务和预先实例化一些Unity注册)。

2)我有很多工作需要在应用程序closures(取消订阅,断开连接,处置,…),我想最好的地方是在* Application_End *方法位于Global.asax

3)当我有用户活动时,一切正常(包含上述Web应用程序的应用程序池启动之后的第一个请求将导致* Application_Start *被调用,之后* Application_End *在应用程序池停止或重新启动时被调用),但问题在没有用户活动时发生,应用程序在活动48小时后尝试重新启动(configuration的要求)。 由于没有要求,申请正式没有开始。 因为* Application_End *不会被调用,所以不能被优雅地停止。

4)现在来了凌乱的部分…我已经尝试在Preload方法结束时从代码发出GET请求,并且它工作。 但是这个解决scheme对我来说似乎不好,即使它工作。 所以,我尝试了很多东西,我试过的最后一件事是:

SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw); HttpRuntime.ProcessRequest(swr); 

…这已经完成了它的目的。 * Application_Start *被调用,(我已经检查了响应,它包含应该在初始请求中显示的login页面),并且在Application_End *中执行必要的工作,从而优雅地结束了应用程序池closures应用程序。

以这种方式启动(预加载和启动)应用程序后,当我想通过Web浏览器访问应用程序时发生了这种情况:

HTTP错误500.21 – 内部服务器error handling程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误的模块“ManagedPipelineHandler”

我无法弄清楚这一点。 有谁能告诉我为什么会发生这种情况,以及如何解决这个问题?

如果我不明白这一点,我将回到第一个解决scheme(从代码发送GET请求),但是这个问题将会bug我,因为我什至不知道什么是错的。

问题

您正在使用SimpleWorkerRequest的情况下,它不是专为。 你在IIS里面使用它。 如果你看看以前的MSDN链接(重点是我的):

提供一个简单的HttpWorkerRequest抽象类的实现,该抽象类可用于在Internet Information Services(IIS)应用程序之外托pipeASP.NET应用程序 。 您可以直接使用SimpleWorkerRequest或扩展它。

另外,如果您查看System.Web.Hosting命名空间的MSDN文档( SimpleWorkerRequest位于此命名空间中),您也将看到类似于上面的内容(同样,重点是我的):

System.Web.Hosting命名空间提供了从Microsoft Internet Information Services(IIS)之外的托pipe应用程序托pipeASP.NET应用程序的function。

解决scheme

我build议删除对SimpleWorkerRequest的调用。 相反,您可以使用Microsoft解决scheme来确保您的网站在回收后自动启动。 您需要的是IIS 7.5的Microsoft 应用程序初始化模块 。 configuration并不复杂,但您需要了解确切的选项。 这就是为什么我还会推荐IIS 7.5的应用程序初始化UI 。 用户界面由MSDN博客编写。

那么,微软的解决scheme到底是什么呢? 它做你正在做的事情 – 在应用程序池启动后,IIS向你的网站发送一个“get”请求。

尝试使用aspnet_regiis -i重新注册ASP.NET。 它为我工作。

.NET 4的可能path(来自提升的命令提示符):

 c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 

http://forums.iis.net/p/1190643/2026401.aspx

如果您遇到Windows 8 / Windows Server 2012和.Net 4.5出现此错误,请按照以下说明进行操作: http : //www.britishdeveloper.co.uk/2013/01/handler-extensionlessurlhandler.html

转到“打开或closuresWindowsfunction”然后Internet信息服务然后万维网服务然后应用程序开发function然后启用ASP.NET 4.5

这对我有用(虽然向导和措辞在Windows Server 2012中有点不同,但你会发现)。 这就是说,为什么这是必要的,通过Web平台安装程序包括所有的依赖关系是完全超越我安装的一切…

尽pipe在本页面上提供了很多build议,但是我仍然在Windows Server 2012上遇到了问题。安装.NET扩展4.5(添加angular色和function>服务器angular色> Web服务器(IIS)> Web服务器>应用程序开发> .NET扩展4.5 )为我解决了这个问题。

运行以下命令之一:

对于32位Windows操作系统:

 c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 

对于64位Windows操作系统:

 c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -I 

这个https://stackoverflow.com/a/13266763/1277458完美的作品。; 但是,如果你有64位操作系统使用Framework64而不是Framework中的path:

 c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i 

对于Windows Server 2016,请使用以下命令:

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

aspnet_regiisbuild议的答案在Windows Server 2016上不起作用:

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i
Microsoft(R)ASP.NET RegIIS版本4.0.30319.0
pipe理实用程序在本地计算机上安装和卸载ASP.NET。
版权所有(C)微软公司。 版权所有。
开始安装ASP.NET(4.0.30319.0)。
此版本的操作系统不支持此选项。 pipe理员应该使用“打开/closuresWindowsfunction”对话框,服务器pipe理器pipe理工具或dism.exe命令行工具来安装/卸载IIS 4.5和IIS8。 有关更多详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=216771
完成安装ASP.NET(4.0.30319.0)。

有趣的是,“打开/closuresWindowsfunction”对话框不允许我解开.NET和ASP.NET 4.6,只有上面的DISM命令工作。 不知道该function名称是否正确,但对我有用

在我的情况下(Windows 10 + IIS 10),我必须打开“ 打开或closuresWindowsfunction ”,然后进入Internet信息服务>万维网服务>应用程序开发function>并检查ASP.NET 4.6

我知道这是一位老人,但是我想我可能会增加一些价值。 对于我们在域之外运行服务器核心的人(域成员可以远程运行服务器pipe理器来添加/删除function/angular色),您必须使用命令行。

Powershell用户可以input“Install-WindowsFeature Web-Asp-Net45”

这应该相当于使用服务器pipe理器。

做这个自己的职位,因为这让我花了几个小时。

我看到在这里和其他地方可能有十几个类似的post关于这个问题和aspnet_regiis修复。 他们不是在为我工作,而aspnet_regiisperformance奇怪,只是列出选项等。

正如上面的用户ryan-anderson所示,您不能input.exe

对于那些对服务器上IIS以外的东西不那么舒服的人来说,简单的步骤就是这样做的。

  1. 在类似于这个path的文件夹中findaspnet_regiis。 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \

  2. 右键单击开始菜单或任何地方的命令提示符,并以pipe理员身份告诉它运行。 使用窗口“运行”function只是不会工作,或不适合我。

  3. 回到aspnet_regiis可执行文件。 单击并将其右键拖动到命令提示符中,或者将地址复制粘贴到命令提示符中。

  4. 删除,如果它在那里,最后的.exe。 这是关键。 在结尾添加-i(空间减去眼睛)。 input。

如果你做得正确,你会看到它开始安装asp.net,然后告诉你它成功了。

确保在IISpipe理器中将application-site版本从v2.0v4.0

应用程序池>您的应用程序>高级设置> .NET Framework版本

之后,安装您的ASP.NET

对于32位操作系统(Windows):

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i

对于64位操作系统(Windows):

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -i

在IISpipe理器中重新启动您的application-site ,并享受。

我有这个问题,发现删除以下文件夹帮助,即使与非Express版本。快速:

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

这个错误发生在我上个星期以来,影响了我的机器上现有的网站。 我没有运气,试图在这里的任何build议。 最后,我完全从IIS删除WebDAV(Windowsfunction – > Internet信息服务 – >万维网服务 – >通用HTTPfunction – > WebDAV发布)。 在这之后,我做了一个IIS重设,并且我的错误终于得到了解决。

我只能猜测,Windows更新开始的问题,但我不能确定。

我正在使用Windows Server 2012..NET扩展性4.5function。 WebDAVModule已删除。 我在ASP.NET路由“/ docs”上仍然收到500.21错误。

将“skipManagedModules”更改为false可修复问题。

 <applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false"> <add initializationPage="/docs" /> </applicationInitialization> 

感谢https://groups.google.com/forum/#!topic/bonobo-git-server/GbdMXdDO4tI

你可以通过修改iis中的“ExtensionlessUrlHandler-Integrated-4.0”types来修复它到System.Web.DefaultHttpHandler

对我来说,从我的服务器中删除WebDAV导致应用程序在使用PUTDELETE时返回503 Service Unavailable错误消息,所以我重新安装了它。 我也尝试彻底删除.NET Framework 4.5并重新安装它,并尝试重新注册build议,但无济于事。

我可以通过禁用单个应用程序池的WebDAV来解决这个问题,当使用PUTDELETE时会停止“坏模块”错误。

禁用个人应用程序池的WebDAV:

  1. 点击受影响的应用程序池
  2. 在列表中findWebDAV Authoring Tools
  3. 点击打开它
  4. 点击右上方的Disable WebDAV

Ta daaaa!

我仍然留在我的web.config文件中的删除项目。

  <system.webServer> <modules> <remove name="WebDAVModule"/> </modules> <handlers> <remove name="WebDAV" /> </handlers> <system.webServer> 

这个链接是我find说明的地方,但不是很清楚。

这可能不是OP的有用解决scheme,但它涉及相同的“错误”消息。

我们正在IIS8.5上正确安装.NET 4.5的PHP页面。

我们利用预加载function来确保我们的应用程序始终能够全面响应。

过了一段时间,我们开始随机获取这个错误。

在web.config中:我把skipManagedModules设置为true, – >不要这样做!

 <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <applicationInitialization skipManagedModules="false" doAppInitAfterRestart="true"> <add initializationPage="/" /> </applicationInitialization> ... 

尽pipe网站是PHP,但是到分页的路由是由模块pipe理的!

我也遇到了这个问题。 我的MVC4应用程序运行在IIS 8.5的Windows Server 2012 R2上。 这些发布的解决scheme没有为我工作…通过IISfunction安装缺less的框架可以解决它,但安装总是失败。

我必须使用Web Platform Installer并安装以下软件包:

在这里输入图像说明

我在共享托pipe服务器上托pipe的Web应用程序中面临此问题。 所以显然没有直接访问IIS,所以不能应用这里提出的很多解决scheme。

在主机提供商的控制面板上,我启用了IIS和ASP.Net的错误日志logging。 然后知道这个错误实际上是在一个丢失的cshtml中。