当前位置:  开发笔记 > 编程语言 > 正文

调用Microsoft.Owin.Cors后无法加载System.Web.Cors程序集

如何解决《调用Microsoft.Owin.Cors后无法加载System.Web.Cors程序集》经验,为你挑选了1个好方法。

当我System.Web.Cors在解决方案资源管理器中检查程序集引用时,它Version5.2.3.0.该Specific Version物业将设置为False.路径是本地项目bin文件夹.从文件资源管理器中检查.dll属性时,文件的产品版本和文件版本.也是5.2.3.

我的Web.config:


    
    

我的packages.config(我认为麻烦的程序集是Microsoft.AspNet.WebApi.Cors,但我在这里包含另一个类似名称):



Startup.cs中抛出此行的错误

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

这是完整的错误:

System.IO.FileLoadException was unhandled by user code
  FileName=System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
  FusionLog==== Pre-bind state information ===
LOG: DisplayName = System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///P:/project-z4a/project-z4a/
LOG: Initial PrivatePath = P:\project-z4a\project-z4a\bin
Calling assembly : Microsoft.Owin.Cors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: P:\project-z4a\project-z4a\web.config
LOG: Using host configuration file: D:\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Users/*****/AppData/Local/Temp/Temporary ASP.NET Files/root/f8163156/5c96d267/System.Web.Cors.DLL.
LOG: Attempting download of new URL file:///C:/Users/*****/AppData/Local/Temp/Temporary ASP.NET Files/root/f8163156/5c96d267/System.Web.Cors/System.Web.Cors.DLL.
LOG: Attempting download of new URL file:///P:/project-z4a/project-z4a/bin/System.Web.Cors.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

  HResult=-2146234304
  Message=Could not load file or assembly 'System.Web.Cors, Version=5.0.0.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)
  Source=Microsoft.Owin.Cors
  StackTrace:
       at Microsoft.Owin.Cors.CorsOptions.get_AllowAll()
       at z4a_dsa.Startup.Configuration(IAppBuilder app) in P:\project-z4a\project-z4a\Startup.cs:line 23
  InnerException: 

所以,我可以看到它期待v5.0.0.0,但我看不出在哪里或为什么要求这个版本.

我已完成以下步骤来调试此错误.在每次列出的尝试之后,我清理,然后重建项目.尝试每个步骤后,错误没有改变.

Update-Package

Install-Package Microsoft.AspNet.WebApi.Cors

Uninstall-Package Microsoft.AspNet.WebApi.Cors, 然后 Install-Package Microsoft.AspNet.WebApi.Cors

Uninstall-Package Microsoft.AspNet.WebApi.Cors, 然后 Install-Package Microsoft.AspNet.WebApi.Cors -Version 5.2.3

通过包管理器窗口降级Microsoft.AspNet.WebApi.Corsv5.0.0.0.

我还不是.NET的专家,这是每次都有不同程序集的同样精确错误的第4次出现,因为我开始了一个带有Web Apichecked 的新空项目.我将z4a-foundation-scaffold-auth软件包安装到我的项目中.我肯定会感谢我对这里知识差距的一些解释!

编辑:使用ILDASM.exe来查看Microsoft.Owin.Cors程序集.System.Web.Cors v5.0.0.0在清单定义中找到它.我想我现在的问题是如何解决这个问题?



1> Caleb Faruki..:

原来System.Web.Cors.dll不是来自Microsoft.AspNet.WebApi.Cors包.它来自Microsoft.AspNet.Cors包装.

Install-Package Microsoft.AspNet.Cors -Version 5.0.0

这解决了即时错误.

如果你有一个场景,你需要两个不同版本的System.Web.Cors.dll,我建议这个解决方案:

    使用程序包管理器,将其版本更改为其清单定义Microsoft.AspNet.CorsMicrosoft.Owin.Cors请求的版本.

    使用Visual Studio的开发人员命令提示符(以管理员身份运行),导航到Microsoft.AspNet.Cors*System.Web.Cors.dll**所在的新版本的软件包文件夹.

    运行以下命令:gacutil -i System.Web.Cors.dll.

    返回到程序包管理器并更改Microsoft.AspNet.Cors回您最初想要的版本.

此方法只是将所需的.dll文件版本提取到Solution的packages文件夹中.然后,您可以使用gacutil.exe此版本的.dll添加到全局程序集缓存中.Visual Studio首先在GAC中探测所需的.dll版本,然后在本地项目中进行探测.


我有同样的问题,除了已经安装了包.我在查看你的答案后用`Update-Package -reinstall Microsoft.AspNet.Cors`修复了它.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有