无法加载类型'System.ServiceModel.Activation.HttpModule'

时间:2013-03-04 10:07:18

标签: asp.net iis

我运行的是aspnet_regiis.exe,但我得到同样的错误:

  

无法从中加载类型'System.ServiceModel.Activation.HttpModule'   assembly'System.ServiceModel,Version = 3.0.0.0,Culture = neutral,   公钥= b77a5c561934e089'。描述:未处理的异常   在执行当前Web请求期间发生。请   查看堆栈跟踪以获取有关错误和位置的更多信息   它起源于代码。例外细节:   System.TypeLoadException:无法加载类型   程序集中的“System.ServiceModel.Activation.HttpModule”   'System.ServiceModel,Version = 3.0.0.0,Culture = neutral,   公钥= b77a5c561934e089'。

8 个答案:

答案 0 :(得分:21)

如果您运行的是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高级服务”下的所有内容。

         

谢谢Neha

  

答案 1 :(得分:13)

将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框架版本,请参阅 this answer。

  • here 描述了此错误的原因,如果您想手动检查,请参阅本文中的以下内容:

  

出现此问题的原因是Windows进程激活服务(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

答案 2 :(得分:2)

似乎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 \框架\ v4.0.30319 和 C:\的Windows \ Microsoft.NET \框架\ V2.0.50727

答案 3 :(得分:1)

访问以下目录中的applicationhost.config文件: C:\ Windows \ System32下\ INETSRV \配置

将定义以下部分:

<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" />

答案 4 :(得分:0)

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

  • aspnet_regiis.exe / iru Aspnet_regiis.exe文件可以在一个文件中找到 以下地点: %WINDIR%\ Microsoft.NET \框架\ v4.0.30319 %windir%\ Microsoft.NET \ Framework64 \ v4.0.30319(在64位计算机上)

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

在Windows 2012上,以下工作正常:

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

Application Pool Properties

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

NULL

我不得不将其重新设置为2.0,然后重新设置为4.0,然后配置文件很好并且错误消失了:

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

答案 7 :(得分:0)

我来晚了,希望对您有所帮助...。这是IIS 8.0的已知问题

  

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

     

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

     

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