我找到了几个涉及这个问题的主题,但没有一个解决了我的问题。
我以前在我的log4net version 1.2.10.0
服务中使用ASP.NET
。我已将其更新为当前版本log4net v2.0.8.0
,由于某些第三方库,我还在web.config
中添加了以下行以支持/重定向旧版本。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="2.0.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
我也对这些消息感到困惑 内部异常:((System.IO.FileLoadException)ex.InnerException.InnerException).Message
无法加载文件或程序集&#39; log4net,版本= 1.2.10.0 , Culture = neutral,PublicKeyToken = 1b44e1d426115821&#39;或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
异常消息:
无法加载文件或程序集&#39; log4net,版本= 2.0.8.0 , Culture = neutral,PublicKeyToken = 1b44e1d426115821&#39;或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
可能以下几行指向FusionLog中的问题
警告:比较程序集名称导致不匹配:PUBLIC KEY TOKEN ERR:无法完成装配设置(hr = 0x80131040)。 探测终止
完成FusionLog
===预绑定状态信息===日志:DisplayName = log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821 (完全指定)LOG:Appbase = file:/// F:/ Cab Management 系统/ CMS-本地化/ CMS-代码/ Web服务/ CMSAPI / LOG:初始 PrivatePath = F:\ Cab Management System \ CMS-Localized \ CMS-Code \ WebServices \ CMSAPI \ bin调用程序集 :paypal_base,版本= 4.4.55.0,文化=中立, 公钥= b37401294aaf5617。 ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:F:\ Cab Management System \ CMS-Localized \ CMS-Code \ WebServices \ CMSAPI \ web.config日志:使用 主机配置文件: C:\ Users \ Dell \ Documents \ IISExpress \ config \ aspnet.config日志:使用 来自的机器配置文件 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。 日志:在应用程序配置文件中找到重定向:1.2.10.0 重定向到2.0.8.0 。日志:政策后参考:log4net, Version = 2.0.8.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821日志: 试图下载新的URL 文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 864fb64d / ad78f51e / log4net.DLL。日志:正在尝试 下载新的URL 文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 864fb64d / ad78f51e / log4net / log4net.DLL。日志: 试图下载新的URL文件:/// F:/ Cab Management 系统/ CMS本地化/ CMS码/ Web服务/ CMSAPI /斌/ log4net.DLL。警告: 比较程序集名称导致不匹配:PUBLIC KEY TOKEN 错误:无法完成程序集的设置(hr = 0x80131040)。探测 终止。
建议
我是否需要将两个.dll放在/ bin文件夹中,
堆栈跟踪
at com.paypal.sdk.profiles.BaseAPIProfile..ctor()at com.paypal.sdk.profiles.ProfileFactory.createSignatureAPIProfile()
在PayPalLibrary.PayPalPayment.SetPaymentProfile(String rsUserName, String rsPassword,String rsSignature,String rsEnviroment,String rsIpAddress)在F:\ path \ Classes \ PayPalPayment.cs中:第34行at API.ServiceBLL.DoCreditCardPayment(String txtNameOnCard,String ddlExpiryMonth,String ddlExpiryYear,String txtCardNo,String txtCv2, 字符串数量,字符串和&amp; paymentServiceType) F:\ Path \ ServiceBLL.cs:第2907行
更新
在Ciprian Lipan的评论意见之后,我在.csproj
中找到了PublicKeyToken
与我的web.config
不同的条目我复制了此标记并在配置中替换并且只获得了例外消息,内部异常消失了。 bellow是进入.csproj
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
<Private>True</Private>
</Reference>
异常
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=**1b44e1d426115821**' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
然而,我在配置中使用.csproj
中找到的新令牌FusionLog
===预绑定状态信息===日志:DisplayName = log4net,Version = 1.2.10.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821 (完全指定)LOG:Appbase = file:/// F:/ Path / API / LOG:Initial PrivatePath = F:\ path \ API \ bin调用程序集 :paypal_base,版本= 4.4.55.0,文化=中立, 公钥= b37401294aaf5617。 ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:F:\ path \ API \ web.config日志:使用 主机配置文件: C:\ Users \ me \ Documents \ IISExpress \ config \ aspnet.config日志:使用 来自的机器配置文件 C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中。 日志:政策后参考:log4net,版本= 1.2.10.0, Culture = neutral,PublicKeyToken = 1b44e1d426115821日志:正在尝试 下载新的URL 文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 864fb64d / ad78f51e / log4net.DLL。日志:正在尝试 下载新的URL 文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 864fb64d / ad78f51e / log4net / log4net.DLL。日志: 尝试下载新的URL文件:/// F:/path/API/bin/log4net.DLL。的 WRN: 比较程序集名称导致不匹配:主要版本 错误:无法完成程序集的设置(hr = 0x80131040)。探测 终止。
答案 0 :(得分:5)
Apache决定改变他们的公钥,arg! similar post here中有一个解决方案。
或者您可以使用旧的公钥令牌恢复对旧的1.2.10.0版本的引用。 nuget log4net 1.2.10.0