asp.net 未能加载文件或程序集“website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website.website

fcg9iug3  于 2023-11-20  发布在  .NET
关注(0)|答案(2)|浏览(167)

我发现了几个与这个问题有关的线程,但没有一个解决了我的问题。
我以前在我的ASP.NET服务中使用log4net version 1.2.10.0。我已经将其更新为当前版本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>

字符串
我也被这些消息搞糊涂了Inner Exception:((System.IO.FileLoadException)ex.InnerException.InnerException).Message
未能加载文件或程序集“log 4 net,Version=1.2.10.0,Culture=neutral,PublicKeyToken= 1b 44 e1 d426115821”或它的某一个依赖项。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x 80131040)

异常消息:

未能加载文件或程序集“log 4 net,Version=2.0.8.0,Culture=neutral,PublicKeyToken= 1b 44 e1 d426115821”或它的某一个依赖项。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x 80131040)

可能是FusionLog中指向问题的以下行

警告:比较程序集名称导致不匹配:PUBLIC KEY TOKEN错误:无法完成程序集的设置(hr = 0x 80131040)。探测已终止

完整的FusionLog

=预绑定状态信息=配置:DisplayName = log 4 net,Version= 1.2.10.0,Culture=neutral,PublicKeyToken= 1b 44 e1 d426115821(完全指定)参数:Appbase = file:/F:/Cab Management System/CMS-Localized/CMS-Code/WebServices/CMSAPI/参数:Initial PrivatePath = F:\Cab Management System\CMS-Localized\CMS-Code\WebServices\CMSAPI\bin调用程序集:paypal_base,Version=4.4.55.0,Culture=neutral,PublicKeyToken= b37401294 aaf 5617. =参数:此绑定在默认加载上下文中启动。参数:使用应用程序配置文件:F:\Cab Management System\CMS-Localized\CMS-Code\WebServices\CMSAPI\web.config错误:使用主机配置文件:C:\Users\Dell\Documents\IISExpress\config\aspnet.config错误:使用来自C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine. config的计算机配置文件错误:在应用程序配置文件中找到重定向:1.2.10.0重定向到2.0.8.0错误:政策后参考:Log 4 net,Version=2.0.8.0,Culture=neutral,PublicKeyToken= 1b 44 e1 d426115821错误:正在尝试下载新的URL文件://C:Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/864 fb 64 d/ad 78 f51 e/log 4net.DLL.错误:正在尝试下载新URL文件:/C:/Windows/Microsoft. NET/Framework/v4. 0. 30319/临时ASP.NET文件/vs/864 fb 64 d/ad 78 f51 e/log 4 net/log 4 net. DLL.错误:正在尝试下载新URL文件:/F:/Cab Management System/CMS-Localized/CMS-Code/WebServices/CMSAPI/bin/log4net.DLL。警告:比较程序集名称导致不匹配:PUBLIC KEY TOKEN错误:无法完成程序集的安装(hr = 0x 80131040)。探测已终止。

建议

我需要把这两个.dll放在/bin文件夹中,

堆栈跟踪

在com.paypal.sdk.profiles.BaseAPIProfile..ctor()在com.paypal.sdk.profiles.ProfileFactory. SignatureAPIProfile()
在PayPalLibrary.PayPalPayment.SetPaymentProfile(String rserName,String rsPassword,String rsSignature,String rsEnviroment,String rsIpAddress)in F:\path\Classes\PayPalPayment.cs:line 34在API.ServiceBLL.DoCreditCardPayment(String txtNameOnCard,String ddlExpiryMonth,String ddlExpiryYear,String txtCardNo,String txtCv2,String amount,String& paymentServiceType)in F:\Path\ServiceBLL.cs:line 2907

更新

在Ciprian Lipan在评论中提出建议后,我在.csproj中找到了这个条目,其中PublicKeyToken与我的web.config不同,我复制了这个令牌并在配置中替换,只得到异常消息,内部异常消失了。

<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 = log 4 net,Version=1.2.10.0,Culture=neutral,PublicKeyToken= 1b 44 e1 d426115821(完全指定)配置:Appbase = file:/F:/Path/API/配置:初始PrivatePath = F:\path\API\bin调用程序集:paypal_base,Version=4.4.55.0,Culture=neutral,PublicKeyToken= b37401294 aaf 5617. =配置:此绑定在默认加载上下文中启动。配置:使用应用程序配置文件:F:\path\API\web.config配置:使用主机配置文件:C:\Users\me\Documents\IISExpress\config\aspnet.config配置:使用来自C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine. config的计算机配置文件。配置:后策略引用:log 4 net,Version=1.2.10.0,Culture=neutral,PublicKeyToken= 1b 44 e1 d426115821配置:尝试下载新URL文件:/C:/Windows/Microsoft. NET/Framework/v4.0.30319/临时ASP.NET文件/vs/864 fb 64 d/ad 78 f51 e/log4net.DLL。错误:尝试下载新URL文件:/C:/Windows/Microsoft. NET/Framework/v4.0.30319/临时ASP.NET文件/vs/864 fb 64 d/ad 78 f51 e/log 4 net/log4net.DLL。错误:尝试下载新URL文件:/F:/path/API/bin/log4net.DLL。警告:比较程序集名称导致不匹配:主要版本错误:未能完成程序集的设置(hr = 0x 80131040)。探测终止。

vwhgwdsa

vwhgwdsa1#

Apache决定更改他们的公钥arg!在similar post here中有一个解决方案。
或者您可以使用旧的公钥标记将引用恢复到旧的1.2.10.0版本。nuget log4net 1.2.10.0

bakd9h0s

bakd9h0s2#

如果这对某人有帮助,
我在使用log4net版本2.0.15和log4net.ext.json版本2.0.10.1时遇到了类似的问题。我将log4net.ext.json降级到2.0.9.1,这个问题就解决了。

相关问题