在IIS 7,我想自定义的HttpHandler用我的ASP.NET Web应用程序。 我使用的管道模式“经典”,.NET版本是4.0.30319,我对处理程序web.config配置是:
<system.webServer>
<handlers>
<add name="MyHandler" path="*.myExtension" verb="*" type="Company.App.UI.Controls.MyHandler, Company.App.UI" resourceType="Unspecified" />
</handlers>
</system.webServer>
当我调用该处理程序中,我得到这个错误:
HTTP Error 500.21 - Internal Server Error
Handler "MyHandler" has a bad module "ManagedPipelineHandler" in its module list
我做了谷歌搜索时,大多数人通过重新注册ASP.NET通过ASPNET_REGIIS.EXE / i命令解决这个问题,但这不是为我工作(在命令完成后,我重新启动IIS,但同样的错误)。 我试图在两个不同的服务器,但得到了同样的结果。
还有什么我应该尝试一下呢? 谢谢
这是不可能的配置IIS托管处理程序,在经典模式中运行。 如果你想这样做,你应该运行在集成模式下IIS。
您可以了解更多关于模块,处理程序和IIS模式在以下博客文章:
IIS 7.0,ASP.NET,管道,模块,处理程序和先决条件
对于处理程序,如果在映射设置前提=“integratedMode”,该处理程序将仅在集成模式下运行。 在另一方面,如果设置前提=“classicMode”的处理程序将只在经典模式中运行。 如果你省略这两个,处理程序可以在两种模式下运行,虽然这是不可能的托管处理程序 。
幸运的是,这是很容易解决。 从提升命令提示后续命令:
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
如果你是一个32位的机器上,你可能必须使用以下命令:
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
我有同样的问题,并通过运行在运行下面的解决
%WINDIR%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASPNET_REGIIS.EXE -i
我有同样的问题,只是解决了它。 我已经张贴在计算器我自己的问题:
不能把我的IHttpHandler,GET优良工程
解决的办法是设置runManagedModulesForWebDavRequests为true模块元件。 我的猜测是,一旦你安装的WebDAV那么所有PUT请求与它相关联。 如果您需要的PUT去处理程序,您需要删除WebDAV模块和该属性设置为true。
<modules runManagedModulesForWebDavRequests="true">
...
</modules>
所以,如果你遇到了问题,当您使用PUT动词和已安装的WebDAV然后希望这个解决方案将解决您的问题。
在Windows Server 2016我已经使用:
dism /online /enable-feature /featurename:IIS-ASPNET45 /all
还可以通过PowerShell的完成:
Install-WindowsFeature .NET-Framework-45-Features
这种情况是因为你还没有安装/启动ASP.net的服务。
在Windows 7,8,10使用下面的命令。
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
我发现一个解决方案是,你应该有通过右键点击你下从高级设置中的应用程序池有管理的网站上,以将.NET Framework更改回2.0。