执行Connect-ExchangeOnline时遇System.Net.Http 4.2.0.0加载失败错误
解决ExchangeOnlineManagement模块Connect-ExchangeOnline时的System.Net.Http加载错误
问题根源
ExchangeOnlineManagement 3.1.0版本的netFramework分支依赖System.Net.Http, Version=4.2.0.0,但服务器上的.NET Framework 4.0未包含该版本,且程序集绑定重定向未正确配置,导致模块无法找到指定程序集。
解决方法
方法一:升级.NET Framework到4.7.2及以上
.NET Framework 4.7.2及更高版本默认包含兼容的System.Net.Http版本,且会自动处理程序集绑定冲突。安装对应版本的.NET Framework后重启服务器,再尝试执行Connect-ExchangeOnline。
方法二:手动配置程序集绑定重定向(适用于无法升级.NET的场景)
- 定位PowerShell 5.1的配置文件路径:
- 64位PowerShell:
C:\Windows\System32\WindowsPowerShell\v1.0 - 32位PowerShell:
C:\Windows\SysWOW64\WindowsPowerShell\v1.0
- 64位PowerShell:
- 创建或编辑
powershell.exe.config文件,添加以下配置:
<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" /> <codeBase version="4.2.0.0" href="C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.dll" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
- 保存文件后关闭所有PowerShell窗口,重新打开PowerShell 5.1,导入模块并执行
Connect-ExchangeOnline。
方法三:切换到PowerShell 7执行命令
PowerShell 7基于.NET Core/.NET 5+生态,自带的System.Net.Http版本与ExchangeOnlineManagement模块完全兼容。直接打开PowerShell 7,导入模块后执行Connect-ExchangeOnline即可绕过.NET Framework的版本限制。
内容的提问来源于stack exchange,提问作者Tihomir Buncic
相关产品推荐
相关产品推荐

