Web应用运行报错:无法加载Microsoft.Owin 3.0.1.0程序集
运行Web应用时出现以下错误:
Could not load file or assembly 'Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
程序集加载跟踪:
=== Pre-bind state information === LOG: DisplayName = Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = file:///C:/Projects/GIT/Site/Portal/ LOG: Initial PrivatePath = C:\Projects\GIT\Site\Portal\bin Calling assembly : Microsoft.AspNet.Identity.Owin, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. ===
应用中并未直接引用Microsoft.Owin 3.0.1.0版本,packages.config内容如下:
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="Castle.Core" version="4.2.1" targetFramework="net452" /> <package id="Crestron.NP.Legacy" version="1.0.7" targetFramework="net471" /> <package id="Crestron.NP.Legacy.Wrappers.Telerik" version="2024.2.513" targetFramework="net471" /> <package id="Crestron.NP.System.Enum" version="1.0.3" targetFramework="net452" /> <package id="Crestron.NP.System.Security" version="2.2.2" targetFramework="net481" /> <package id="EntityFramework" version="6.4.4" targetFramework="net471" /> <package id="FluentAssertions" version="4.19.4" targetFramework="net452" /> <package id="HtmlAgilityPack" version="1.8.5" targetFramework="net452" /> <package id="jQuery" version="3.7.1" targetFramework="net481" /> <package id="jQuery.UI.Combined" version="1.13.2" targetFramework="net481" /> <package id="Microsoft.AspNet.Identity.Core" version="2.2.4" targetFramework="net481" /> <package id="Microsoft.AspNet.Identity.Owin" version="2.2.4" targetFramework="net481" /> <package id="Microsoft.AspNet.Razor" version="3.2.5" targetFramework="net452" /> <package id="Microsoft.AspNet.WebPages" version="3.2.5" targetFramework="net452" /> <package id="Microsoft.AspNet.WebPages.WebData" version="3.2.4" targetFramework="net452" /> <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net452" requireReinstallation="true" /> <package id="Microsoft.Exchange.WebServices" version="2.2" targetFramework="net471" /> <package id="Microsoft.Extensions.Caching.Abstractions" version="3.1.2" targetFramework="net471" /> <package id="Microsoft.Extensions.Caching.Memory" version="3.1.2" targetFramework="net471" /> <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="3.1.2" targetFramework="net471" /> <package id="Microsoft.Extensions.Logging.Abstractions" version="3.1.2" targetFramework="net471" /> <package id="Microsoft.Extensions.Options" version="3.1.2" targetFramework="net471" /> <package id="Microsoft.Extensions.Primitives" version="3.1.2" targetFramework="net471" /> <package id="Microsoft.Identity.Client" version="4.37.0" targetFramework="net471" /> <package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net471" /> <package id="Microsoft.Owin" version="4.2.2" targetFramework="net481" /> <package id="Microsoft.Owin.Host.SystemWeb" version="4.2.2" targetFramework="net481" /> <package id="Microsoft.Owin.Security" version="4.2.2" targetFramework="net481" /> <package id="Microsoft.Owin.Security.Cookies" version="4.2.2" targetFramework="net481" /> <package id="Microsoft.Owin.Security.OAuth" version="4.2.2" targetFramework="net481" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" /> <package id="NETStandard.Library" version="2.0.3" targetFramework="net481" /> <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net471" /> <package id="Owin" version="1.0" targetFramework="net481" /> <package id="Radius" version="2.0.0.2" targetFramework="net452" /> <package id="RazorEngine" version="3.10.0" targetFramework="net452" /> <package id="Syncfusion.Compression.Base" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.DocIO.Wpf" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.DocToPDFConverter.Wpf" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.ExcelToPdfConverter.Wpf" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.HtmlToPdfConverter.WPF" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.Licensing" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.OfficeChart.Base" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.Pdf.Wpf" version="27.1.51" targetFramework="net481" /> <package id="Syncfusion.XlsIO.Wpf" version="27.1.51" targetFramework="net481" /> <package id="System.Buffers" version="4.4.0" targetFramework="net471" /> <package id="System.Collections.Immutable" version="1.2.0" targetFramework="net471" /> <package id="System.ComponentModel.Annotations" version="4.7.0" targetFramework="net471" /> <package id="System.Linq.Dynamic" version="1.0.7" targetFramework="net452" /> <package id="System.Memory" version="4.5.2" targetFramework="net471" /> <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net471" /> <package id="System.Reflection.Metadata" version="1.3.0" targetFramework="net471" /> <package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net471" /> <package id="System.Text.Encoding.CodePages" version="4.4.0" targetFramework="net471" /> <package id="System.ValueTuple" version="4.4.0" targetFramework="net45" requireReinstallation="true" /> </packages>
已尝试Visual Studio清理、删除obj和bin文件夹,错误仍存在,求解决办法。
添加程序集绑定重定向
在web.config的<configuration>节点下添加以下<runtime>配置,强制将Microsoft.Owin的旧版本请求重定向到已安装的4.2.2版本:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" /> </dependentAssembly> </assemblyBinding> </runtime>检查间接依赖的包版本
运行NuGet命令查看Microsoft.AspNet.Identity.Owin的依赖链,确认是否有依赖项引用了旧版本的Microsoft.Owin:Install-Package NuGet.CommandLine nuget list package Microsoft.AspNet.Identity.Owin -Dependencies如果发现有依赖包强制要求3.0.1.0版本,可尝试更新该依赖包到兼容4.2.2版本的最新版。
重新安装所有NuGet包
执行以下命令彻底清除并重新安装所有依赖包,确保版本一致:Update-Package -reinstall执行前建议备份packages.config文件,避免意外问题。
检查GAC中的程序集
打开命令提示符(管理员权限),运行以下命令检查全局程序集缓存中是否存在Microsoft.Owin 3.0.1.0版本:gacutil /l Microsoft.Owin如果存在,使用以下命令卸载该版本:
gacutil /u Microsoft.Owin,Version=3.0.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35
内容的提问来源于stack exchange,提问作者Thierry Verhaegen

