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

伊凡·佩里克(Ivan Peric)

老实说,我尝试过对IIS进行欺骗,而当我以为自己想摆脱它时,我意识到我的解决方法不起作用。这是我尝试做的事情:

1)我有一个ASP.NET应用程序,该应用程序具有继承IProcessHostPreloadClient的Preloader类,并在Preload方法实现中进行了所有繁重的初始化工作(应用程序很复杂,并且是一个庞大系统的一部分,因此大约需要2分钟才能建立与所有必要组件的连接服务并预先实例化一些Unity注册)。

2)我需要在应用程序关闭时完成很多工作(取消订阅,断开连接,处分……),我想最好的选择是在Global.asax中的* Application_End *方法中

3)当我有用户活动时,一切工作都很好(启动包含上述Web应用程序的应用程序池后的第一个请求将导致* Application_Start *被调用,然后* Application_End *在应用程序池停止或回收时被调用),但是问题当没有用户活动并且应用程序在活动48小时后尝试重新启动自身(配置的要求)时,会发生这种情况。由于没有任何请求,因此正式没有开始申请。抱歉,由于不会调用* Application_End *,因此无法正常停止。

4)现在出现了混乱的部分...我试图在Preload方法的末尾从代码发出GET请求,并且它起作用了。但是这种解决方案对我来说似乎很糟糕,即使它可行。所以,我尝试了很多事情,而我最后尝试的是:

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

...达到了目的。* Application_Start *被调用,(我检查了响应,它包含应该在初始请求中显示的登录页面),并通过在* Application_End *中进行必要的工作而在Application Pool关闭时正常关闭了应用程序。

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

HTTP错误500.21-内部服务器错误处理程序“ ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中具有错误的模块“ ManagedPipelineHandler”

我无法弄清楚。谁能告诉我为什么会这样以及如何解决呢?

如果我不明白这一点,我将返回第一个解决方案(从代码发送GET请求),但是由于我什至不知道出了什么问题,所以这个问题会困扰我。

x x

问题

您正在特定情况下使用SimpleWorkerRequest您正在IIS中使用它如果您查看以前的MSDN链接(重点是我的链接):

提供HttpWorkerRequest抽象类的简单实现,该类可用于在Internet Information Services(IIS)应用程序外部托管ASP.NET应用程序您可以直接使用SimpleWorkerRequest或对其进行扩展。

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

System.Web.Hosting命名空间提供了从Microsoft Internet信息服务(IIS)外部的托管应用程序托管ASP.NET应用程序的功能

解决方案

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

那么微软解决方案到底能做什么?它可以完成您想要做的事情-启动应用程序池后,IIS向您的网站发送“获取”请求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章