未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“

本文介绍了在Visual Studio 2010环境下遇到的无法加载类型‘System.ServiceModel.Activation.HttpModule’的错误原因及解决办法。问题源于在已安装.NET Framework 4的情况下启用了.NET Framework 3.5 WCF HTTP激活。通过在命令提示符下运行特定命令行,可以解决此问题。此外,文章还分析了操作系统与应用程序池配置的不匹配导致的问题,并提供了相应的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”。

 

错误原因:根据MSDN的解释:如果安装了 .NET Framework 4,随后启用了 .NET Framework 3.5WCF HTTP 激活,则会发生此错误。


解决办法:

若要解决该问题,请在 Visual Studio 2010 命令提示符下运行下面的命令行:

aspnet_regiis.exe -i -enable

或在cmd中运行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i -enable


另:

执行此命令后命令提示符提示错误:

用于在本地计算机上安装和卸载 ASP.NET 的管理实用工具。
版权所有(C) Microsoft Corporation。保留所有权利。
开始安装 ASP.NET (4.0.30319.33440)。
此操作系统版本不支持此选项。管理员应使用“打开或关闭 Windows 功能”对话框、“服
务器管理器”管理工具或 dism.exe 命令行工具安装/卸载包含 IIS8 的 ASP.NET 4.5。有
关更多详细信息,请参见 http://go.microsoft.com/fwlink/?LinkID=216771。
ASP.NET (4.0.30319.33440)安装完毕。

原因分析:我的操作系统是64位的,网站的应用程序池选择的是“DefaultAppPool”。它的.NET CLR 版本是v4.0,托管管道模式是集成。据了解,64位操作系统托管管道模式要选择经典模式。

解决办法:在IIS中设置网站应用程序池为“.NET v4.5 Classic”。它的.NET CLR版本是v4.0,托管管道模式是经典。然后在此应用程序池的高级设置中设置“启用 32 位应用程序”的值为“True”,保存即可。(按此思路,设置“DefaultAppPool”的托管管道模式为经典也行,但是我的原则是尽量少地改动。。)

 

 

 

http://blog.youkuaiyun.com/jumtre/article/details/38975645

 

<think>好的,用户遇到了一个System.TypeLoadException异常,具体是无法从程序集System.Web, Version=4.0.0.0类型System.Web.HttpException。我需要根据提供的引用信息和相关知识,给出解决方案。 首先,分析可能的原因。根据引用[1],类似的类型错误可能是版本不匹配或程序集损坏。引用[2]中提到Web.config中的程序集版本问题,可能存在引用旧版本的情况。引用[3]建议重新编译或调整编译设置,而引用[4]提到IIS配置的问题。 接下来,逐步排查: 1. 检查程序集版本:确认项目中引用的System.Web是否正确,版本是否匹配。用户的问题中提到的版本是4.0.0.0,可能需要检查是否引用了其他版本,或者在配置文件中绑定了错误的版本。 2. 清理和重新生成解决方案:有时候旧的编译文件可能导致问题,清理后重新生成可以解决。 3. 检查Web.config的绑定重定向:引用[2]中的情况是版本不匹配,通过绑定重定向将旧版本指向新版本。用户可能需要添加类似配置,确保所有引用指向正确的4.0.0.0版本。 4. 检查GAC中的程序集:使用gacutil确认System.Web是否正确安装,没有冲突的程序集5. 检查IIS配置:参考引用[4],检查处理程序映射和模块是否正确配置,确保IIS使用正确的.NET版本。 6. 更新.NET Framework:安装最新的更新,可能修复已知的兼容性问题。 最后,综合这些步骤,给出用户一个结构清晰的解决方案,确保覆盖所有可能的原因,并引用相关的参考资料。</think>### 如何解决`System.TypeLoadException: Could not load type &#39;System.Web.HttpException&#39;`异常? #### 1. 检查程序集版本一致性 - **问题根源**:目标类型`System.Web.HttpException`在程序集`System.Web, Version=4.0.0.0`中缺失或版本不匹配。可能因项目引用了旧版本或混合版本导致[^1][^2]。 - **解决步骤**: 1. 在Visual Studio中,右键项目 → **管理NuGet程序包** → 确保`System.Web`的版本与目标框架(如.NET 4.x)一致。 2. 检查`Web.config`中是否存在绑定重定向(Binding Redirect),强制统一版本: ```xml <dependentAssembly> <assemblyIdentity name="System.Web" publicKeyToken="b03f5f7f11d50a3a" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> ``` #### 2. 清理并重新生成解决方案 - **操作说明**:旧编译文件可能导致残留冲突。执行以下操作: 1. 选择菜单栏 → **生成** → **清理解决方案**。 2. 再次执行**生成解决方案**。 #### 3. 验证全局程序集缓存(GAC) - **关键点**:若`System.Web.dll`未正确注册到GAC,可能导致运行时加失败。 - **操作步骤**: 1. 打开开发者命令提示符,执行: ``` gacutil /l System.Web ``` 2. 确认输出中包含`Version=4.0.0.0`。若缺失,需通过安装对应.NET Framework版本修复。 #### 4. 检查IIS配置(若部署到IIS) - **参考方案**:根据引用[^4],若IIS模块或处理程序映射错误,可能引发类型异常。 1. 打开IIS管理器 → 进入站点 → **模块**,确认`System.ServiceModel`相关模块存在。 2. 在**处理程序映射**中,确保`.svc`等扩展映射到正确的处理程序。 #### 5. 更新.NET Framework - **适用场景**:系统或服务器缺少必要的补丁,导致程序集不兼容。 - **操作**:通过Windows Update安装最新的.NET Framework 4.x更新。 #### 6. 检查第三方依赖项 - **扩展排查**:若项目引用了其他库(如`System.Web.WebPages.Razor`),需确保其版本与`System.Web`兼容[^2]。例如: ```xml <dependentAssembly> <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> ``` --- ### 相关问题 1. **如何诊断.NET程序中的`TypeLoadException`异常?** 2. **在ASP.NET项目中,如何正确配置程序集绑定重定向?** 3. **IIS部署ASP.NET应用时常见的程序集错误有哪些?** --- 通过上述步骤,可系统性解决因版本不一致、配置错误或环境缺失导致的类型异常。若问题仍未解决,建议检查事件查看器或使用Fusion Log工具进一步分析程序集日志[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值