处理程序“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
如果您遇到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_regiis
build议的答案在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以外的东西不那么舒服的人来说,简单的步骤就是这样做的。
-
在类似于这个path的文件夹中findaspnet_regiis。 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \
-
右键单击开始菜单或任何地方的命令提示符,并以pipe理员身份告诉它运行。 使用窗口“运行”function只是不会工作,或不适合我。
-
回到aspnet_regiis可执行文件。 单击并将其右键拖动到命令提示符中,或者将地址复制粘贴到命令提示符中。
-
删除,如果它在那里,最后的.exe。 这是关键。 在结尾添加-i(空间减去眼睛)。 input。
如果你做得正确,你会看到它开始安装asp.net,然后告诉你它成功了。
确保在IISpipe理器中将application-site
版本从v2.0
为v4.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导致应用程序在使用PUT
或DELETE
时返回503 Service Unavailable
错误消息,所以我重新安装了它。 我也尝试彻底删除.NET Framework 4.5并重新安装它,并尝试重新注册build议,但无济于事。
我可以通过禁用单个应用程序池的WebDAV来解决这个问题,当使用PUT
或DELETE
时会停止“坏模块”错误。
禁用个人应用程序池的WebDAV:
- 点击受影响的应用程序池
- 在列表中find
WebDAV Authoring Tools
- 点击打开它
- 点击右上方的
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中。
- Path.Combine的url?
- @ Html.HiddenFor在ASP.NET MVC的列表中不起作用
- 如何将枚举types绑定到DropDownList?
- 检查下拉列表是否包含值的最佳方法?
- 如何打开PDF文件在一个新的选项卡或窗口,而不是下载(使用asp.net)?
- 要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例
- “System.Net.Http.HttpContent”不包含“ReadAsAsync”的定义,也没有扩展方法
- 将对象传递给HTML属性
- 从HttpContext获取当前的System.Web.UI.Page?