首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理程序“ExtensionlessUrlHandler-Integrated4.0”的模块列表中有一个错误的模块"ManagedPipelineHandler“。

处理程序“ExtensionlessUrlHandler-Integrated4.0”的模块列表中有一个错误的模块"ManagedPipelineHandler“。
EN

Stack Overflow用户
提问于 2012-10-31 16:29:19
回答 22查看 298.6K关注 0票数 274

老实说,我试图对IIS耍个卑鄙的把戏,就在我以为我会逃脱它的时候,我才意识到我的解决办法行不通。以下是我想做的事:

1)我有一个ASP.NET应用程序,它具有继承ASP.NET的预加载器类,并在预加载方法实现中执行所有繁重的初始化(应用程序很复杂,它是一个庞大系统的一部分,因此需要大约2分钟来建立到所有必要服务的连接,并预先实例化一些统一注册)。

2)在应用程序关闭(取消订阅、断开连接、处理、.)方面,我有很多工作要做,我想最好的地方是在位于*Application_End* Global.asax的方法中。

3)当我有用户活动时,一切都正常工作(启动包含上述web应用程序的Application后的第一个请求将导致调用*Application_Start*,然后在application停止或循环上调用*Application_End* ),但当没有用户活动时出现问题,应用程序在激活48小时后试图重新启动自身(配置要求)。由于没有任何请求,所以应用程序没有正式启动。因此,它不能优雅地停止,因为*Application_End*不会被调用。

4)现在是混乱的部分..。在预加载方法的末尾,我尝试从代码中发出一个GET请求,它起了作用。但这个解决方案对我来说似乎很糟糕,尽管它奏效了。所以,我尝试了很多事情,最后一次尝试的是:

代码语言:javascript
复制
SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);

..。这已经达到了它的目的。*Application_Start*被调用了,(我检查了响应,它包含了应该在初始请求中显示的登录页面),在Application关机应用程序上,通过在*Application_End*中完成必要的工作而优雅地结束了。

在以这种方式启动应用程序(预加载和启动)之后,当我希望通过Web浏览器访问应用程序时,会发生这样的情况:

HTTP Error 500.21 -内部服务器错误处理程序“ExtensionlessUrlHandler-Integrated4.0”模块列表中有一个错误的模块"ManagedPipelineHandler“

我想不出这点。有人能告诉我为什么会发生这种事,以及如何解决吗?

如果我不知道这一点,我会回到第一个解决方案(从代码发送GET请求),但是这个问题会困扰我,因为我甚至不知道出了什么问题。

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2013-11-26 21:35:59

问题

您正在使用SimpleWorkerRequest的场景,而该场景不是为其设计的。您正在IIS中使用它。如果您查看前面的MSDN链接(重点是我的):

提供HttpWorkerRequest抽象类的简单实现,该抽象类可用于在Internet信息服务(IIS)应用程序之外承载ASP.NET应用程序。您可以直接使用SimpleWorkerRequest,也可以扩展它。

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

System.Web.Hosting命名空间提供了托管来自(IIS)之外的托管应用程序的ASP.NET应用程序的功能。

解决方案

我建议删除对SimpleWorkerRequest的调用。相反,您可以使用Microsoft解决方案来确保您的网站在回收后自动启动。您需要的是微软的IIS 7.5的应用程序初始化模块。配置并不复杂,但您需要了解确切的选项。这就是我也推荐IIS 7.5的应用程序初始化UI的原因。UI是由MSDN博主编写的。

那么,微软的解决方案到底是做什么的呢?它完成了您想要做的事情--在应用程序池启动后,IIS会向您的网站发送一个"get“请求。

票数 25
EN

Stack Overflow用户

发布于 2012-11-07 09:29:46

尝试用ASP.NET重新注册aspnet_regiis -i.对我起作用了。

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

代码语言:javascript
复制
c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

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

票数 654
EN

Stack Overflow用户

发布于 2013-02-26 22:54:21

如果您在Windows8/ Windows 2012和.Net 4.5中遇到此错误,请遵循以下说明:http://www.britishdeveloper.co.uk/2013/01/handler-extensionlessurlhandler.html

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

这对我有用(虽然在Windows 2012中向导和措辞有点不同,但您会弄清楚的)。尽管如此,在通过Web平台安装程序安装所有东西(包括所有依赖项)之后,为什么这是必要的呢?

票数 187
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13162545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档