【问题标题】:Could not load type 'System.ServiceModel.Activation.HttpModule'无法加载类型“System.ServiceModel.Activation.HttpModule”
【发布时间】:2013-03-04 10:07:17
【问题描述】:

我正在运行 aspnet_regiis.exe,但仍然出现同样的错误:

无法从 程序集‘System.ServiceModel,版本=3.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089'。描述:未处理的异常 在当前 Web 请求执行期间发生。请 查看堆栈跟踪以获取有关错误和位置的更多信息 它起源于代码。异常详情: System.TypeLoadException:无法加载类型 程序集中的“System.ServiceModel.Activation.HttpModule” ‘System.ServiceModel,版本=3.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089′。

【问题讨论】:

  • 您能提供有关 .net / asp.net 和 iis 版本的信息吗?

标签: asp.net iis


【解决方案1】:

如果您运行的是 Windows 8,此方法将不起作用。微软不会让你运行这个命令,告诉你:

此版本的操作系统不支持此选项。管理员应该使用“打开/关闭 Windows 功能”对话框、服务器管理器管理工具或 dism.exe 命令行工具来安装/卸载带有 IIS8 的 ASP.NET 4.5。

原因在此链接上:http://support.microsoft.com/kb/2736284

对我有用的解决方案发布在此链接上,Neha 的回答是:System.ServiceModel.Activation.HttpModule error

这个解决方案的所有问题都提到了使用 aspnet_regiis.exe 重新注册 aspNet。但这对我不起作用。

虽然这是一个有效的解决方案(这里解释得很漂亮)

但它不适用于 Windows 8。

对于 Windows 8,您需要 Windows 功能并启用“.Net Framework 3.5”和“.Net Framework 4.5 Advanced Services”下的所有内容。

谢谢尼哈

【讨论】:

  • 这解决了我在 Windows Server 2012 上的问题。请注意,我必须仔细确保检查了所有 3.5 和 4.5 项目...仔细查看,因为其中一些内容很容易错过。更奇怪的是,因为我的 WCF 项目是为 4.0 编译的
【解决方案2】:

在将 IIS 服务器升级到 .NET 4.5.1(之前安装了 .NET 4.0)后,我遇到了同样的错误。 就我而言,使用参数 -iru 运行 aspnet_regiis 解决了问题,即。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -iru

注意:64位系统上你应该使用

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -iru

注意事项:

  • .NET 4.0 及更高版本(例如 4.5.1)都安装到 v.4.0.30319 中,这与早期版本相比有所改变(您不会找到 v4.5 文件夹)。要获取已安装的 .NET 框架版本,请参阅 this 答案。

  • 描述了这个错误的原因here,如果要手动检查,我从这篇文章中引用如下:

出现此问题是因为 Windows Process Activation Service (WAS) 的 Applicationhost.config 文件定义了以下部分,并且此部分与 .NET Framework 4.0 不兼容:强>

<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />

这部分应该定义如下(注意preCondition):

<add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, 
System.ServiceModel, Version=3.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089" 
preCondition="managedHandler,runtimeVersionv2.0" />

注意:您可以在以下位置找到Applicationhost.config文件:%windir%\system32\inetsrv\config

【讨论】:

  • 在 Windows Server 2008 R2 上安装 .NET Framework 4.5.2 后遇到同样的错误。运行 aspnet_regiis.exe /iru 为我解决了这个问题。请注意,正如您在 64 位计算机上引用的 Microsoft 文章中所述,应该从 64 位文件夹 %windir%\Microsoft.NET\Framework64\v4.0.30319 进行注册.
  • @DavidRR:谢谢你的提示,我已经更新了答案。
  • 我必须更改 Applicationhost.config 才能使其在 Windows Server 2016 上运行。
【解决方案3】:

似乎 ASP.NET 4.0 未在 IIS 中正确注册。你能尝试用 IIS 重新注册 asp.net 吗?您可以同时尝试 2.0 和 4.0,以确保它适用于所有 .NET 版本。

对两个版本的 asp.net 使用以下命令向 IIS 注册 asp.net

aspnet_regiis -i

这位于两个 .NET 框架版本文件夹中。

C:\Windows\Microsoft.NET\Framework\v4.0.30319 和 C:\Windows\Microsoft.NET\Framework\v2.0.50727

【讨论】:

    【解决方案4】:

    进入以下目录中的 applicationhost.config 文件: C:\Windows\system32\inetsrv\config

    将定义以下部分:

    <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
    

    上述定义与 .NET framework 4.0 不兼容,您可以通过将上述部分替换为以下内容来解决此问题:

    <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />
    

    【讨论】:

      【解决方案5】:

      要解决此问题,请运行以下命令行:

      • aspnet_regiis.exe /iru Aspnet_regiis.exe 文件位于一个 下列地点之一: %windir%\Microsoft.NET\Framework\v4.0.30319 %windir%\Microsoft.NET\Framework64\v4.0.30319(在 64 位计算机上)

      【讨论】:

      • 请描述运行该 exe 将如何解决问题。
      【解决方案6】:

      要解决此问题,请运行以下命令行:

      1. 关闭应用程序
      2. 在项目文件(Web Application)中更改虚拟目录
      3. 现在打开项目文件

      它肯定会起作用。

      【讨论】:

        【解决方案7】:

        在 Windows 2012 上,以下工作:

        由于我不知道默认应用程序池设置为使用 4.0 的原因:

        Application Pool Properties

        但它没有正确反映在 c:\windows\system32\inetesrv\config\applicationhost.config 中:

        <add name="DefaultAppPool" enable32BitAppOnWin64="true" />
        

        我不得不将它设置回 2.0,然后再次设置为 4.0,然后配置文件很好,错误消失了:

        <add name="DefaultAppPool" enable32BitAppOnWin64="true" managedRuntimeVersion="v4.0" />
        

        【讨论】:

          【解决方案8】:

          我迟到了,希望对某人有所帮助....这是 IIS 8.0 的一个已知问题

          解决方案是从 IIS 管理器中删除 3.x 模块和处理程序。 如果您愿意,可以在应用程序或站点级别删除它们 将它们保存在 applicationHost.config 中。但我想从 应用程序主机配置。执行以下步骤:

          在 IIS 管理器中,单击机器名称节点。在“功能视图”中, 双击“模块”。找到“ServiceModel”并将其删除。图 1 为 解决 IIS 8 错误:无法加载类型 ‘System.ServiceModel.Activation.HttpModule’

          回到机器名称节点的“功能视图”,双击 “处理程序映射”。找到“svc-Integrated”并将其删除。图 2 为 解决 IIS 8 错误:无法加载类型 ‘System.ServiceModel.Activation.HttpModule’

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-19
            • 1970-01-01
            • 2012-08-14
            • 2015-08-28
            • 2016-03-05
            • 2014-08-09
            • 2015-04-16
            • 2010-09-08
            相关资源
            最近更新 更多