c# - 处理程序 "ExtensionlessUrlHandler-Integrated-4.0"在其模块列表中有一个坏模块 "ManagedPipelineHandler"

标签 c# asp.net iis web-applications

老实说,我曾尝试在 IIS 上使用一些卑鄙的把戏,就在我以为我可以逃脱惩罚时,我意识到我的解决方法行不通。这是我尝试做的事情:

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

2) 我有很多工作需要在应用程序关闭时完成(取消订阅、断开连接、处理......),我想最好的地方是在位于 Global.asax.

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* 中执行必要的工作正常结束。

但是

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

HTTP Error 500.21 - Internal Server Error Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list

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

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

最佳答案

尝试使用 aspnet_regiis -i 重新注册 ASP.NET。它对我有用。

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

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

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

关于c# - 处理程序 "ExtensionlessUrlHandler-Integrated-4.0"在其模块列表中有一个坏模块 "ManagedPipelineHandler",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13162545/

相关文章:

c# - asp.net中清空Cache对象的集中方式

c# - 如何将 DataTable 转换为类对象?

c# - 使用 c# linq 一次填充/加载列表以提高性能

c# - 在 IIS 上更改 targetFramework

asp.net - IIS 在哪里(如何?)存储自定义应用程序池标识?

url - IIS 重写模块和子应用程序

c#如何从字节中获取字符串?

c# - SystemEvents.SessionSwitch 哪个用户被锁定/解锁

c# - 将部分xml反序列化为字符串

asp.net - 旧版 Web 应用程序 - 确定与现代浏览器的向前兼容性?