无法加载文件或程序集' log4net,Version = 2.0.8.0,Culture = neutral,PublicKeyToken = 1b44e1d426115821'或其中一个依赖项

时间:2017-03-17 07:33:50

标签: c# asp.net .net log4net .net-assembly

我找到了几个涉及这个问题的主题,但没有一个解决了我的问题。

我以前在我的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)。探测   终止。

1 个答案:

答案 0 :(得分:5)

Apache决定改变他们的公钥,arg! similar post here中有一个解决方案。

或者您可以使用旧的公钥令牌恢复对旧的1.2.10.0版本的引用。 nuget log4net 1.2.10.0

相关问题