我的代码在本地运行得很好,但在发布到服务器后我不断收到此错误:
无法加载文件或程序集“Microsoft.Owin,Version=3.0.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
我在这个项目中甚至没有Microsoft.Owin版本3.0.1.0,这个项目中使用的版本是2.0.0.0。然后我尝试更新 Owin 和依赖项文件但无济于事。即使删除 Bin 文件夹并重建代码后我仍然遇到同样的问题。
有人可以帮助我吗?
编辑: 将其添加到 Web.Config 后:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
这就是我得到的:
无法加载文件或程序集“file:///C:\Project in\Microsoft.Owin.dll”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
使用 Web.config -> Microsoft.Owin
版本验证已安装的 Microsoft.Owin 软件包版本 [在
管理 Nuget 软件包]。
这两个版本应该匹配。
这个对我有用
我在更新解决方案中的软件包后遇到了这个问题。我通过重新安装 Microsoft.Owin 解决了这个问题。
从 Visual Studio 中的包管理器控制台:
update-package microsoft.owin
完成后,我能够再次运行我的应用程序。
我在 4.1.0.0 和 4.0.1.0 上遇到了同样的问题,错误显示为 3.0.1.0,因此请务必检查 Web.config 并设置为 .csproj 中的正确版本。就我而言,我必须更新 Web.config 并将 4.0.1.0 替换为 4.1.0.0。在版本匹配之前,更新包不会执行任何操作。
转到 Nuget 包管理器并更新所有包(如果需要)或更新 Owin 包并再次构建并运行服务器。这对我有用。
我也遇到过几次这样的情况。安装 nuget 包(并接受许可证)总是对我有用。
因此,在 Visual Studio 中右键单击您的项目(?),管理 nuget 包。查找已安装的选项卡,如果有则删除。然后选项卡浏览,并查找 Microsoft.Owin(有几个),安装它们,然后就可以开始了!
转到引用并单击 Microsoft.Owin 查看您安装的版本,然后转到 web.config 并将 Microsoft.Owin 下的引用更改为 3.0.1.0,然后转到 Package.config 并更改为相同版本。如果您不这样做不想出现任何问题。在“管理 Nugget 包”上为所有这些安装不同的包版本,并重复您之前执行的引用过程
对 SharePoint 订阅版从 2024 年 2 月 CU 到 2024 年 3 月 CU 进行零停机修补后,我收到此错误。
看起来该补丁将 Microsoft.Owin 的版本从 3.0.1.0 升级到了 4.2.2.0 版本。
当我进行零停机修补时,我一次只修补一半的服务器。但是,当我尝试将安装补丁的前端服务器带回 NLB 集群时,它显示了该错误。
此错误基本上意味着 web.config 中引用的 Microsoft.Owin 版本与 bin 目录中的版本或全局程序集缓存 (GAC) 中安装的版本不匹配。
我通过从 c:\Windows\Microsoft.Net ssembly 开始从 Powershell 运行“dir Microsoft.Owin -recurse”来确认 GAC 版本为 4.2.2.0。
我通过 Windows 资源管理器导航到 Microsoft.Owin.dll 的位置,然后右键单击 -> 属性,然后在详细信息选项卡中检查 .dll 版本。
接下来,我转到我的一个网络应用程序的 web.config 位置。 c:\inetpub\wwwroot\wss\VirtualDirectories[webapp 目录]
此外,还将前端服务器上的 web.config 与我安装了 CU 的开发 SharePoint 服务器上的 web.config 进行比较,以验证 CU 是否正常工作。
搜索 Microsoft.Owin 并找到定义依赖程序集的位置:
我找到了 Microsoft.Owin 的 dependentAssembly 条目,并将 bindingRedirect 更改为指向版本 4.2.2.0 而不是 3.0.1.0。
<bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" />
基本上,必须对每个 web 应用程序的 web.config 文件执行此操作。
然后,我能够使该前端 Web 服务器在 NLB 集群中重新上线,这样我就可以继续为其他前端 Web 服务器进行零停机修补。