15

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

无法从程序集“System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”加载类型“System.ServiceModel.Activation.HttpModule”。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.TypeLoadException:无法从程序集“System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”加载类型“System.ServiceModel.Activation.HttpModule”。

4

8 回答 8

21

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

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

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

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

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

虽然这是一个有效的解决方案(如此处精美解释)

但它不适用于 Windows 8。

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

谢谢内哈

于 2013-04-30T15:57:35.647 回答
16

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

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 框架版本,请参阅答案。

  • 这里描述了这个错误的原因,如果你想手动检查,我从这篇文章中引用以下内容:

出现此问题的原因是 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

于 2015-01-09T09:55:41.123 回答
2

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

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

aspnet_regiis -i

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

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

于 2013-03-04T10:32:53.967 回答
2

获取以下目录中的 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" />
于 2016-01-18T17:46:49.697 回答
0

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

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

它肯定会起作用。

于 2015-02-23T04:36:17.350 回答
0

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

  • aspnet_regiis.exe /iru Aspnet_regiis.exe 文件位于以下位置之一: %windir%\Microsoft.NET\Framework\v4.0.30319 %windir%\Microsoft.NET\Framework64\v4.0.30319(在 64位计算机)
于 2014-11-26T05:30:38.727 回答
0

在 Windows 2012 上,以下工作:

出于某种原因,我不知道默认应用程序池设置为使用 4.0 :

应用程序池属性

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

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

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

<add name="DefaultAppPool" enable32BitAppOnWin64="true" managedRuntimeVersion="v4.0" />
于 2016-01-27T12:48:50.607 回答
0

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

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

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

回到机器名节点的“Features View”,双击“Handler Mappings”。找到“svc-Integrated”并将其删除。图 2 用于解决 IIS 8 错误:无法加载类型“System.ServiceModel.Activation.HttpModule”</p>

于 2019-08-02T15:16:40.627 回答