Asp.net 使用的程序集和引用的程序集之间的差异

Asp.net 使用的程序集和引用的程序集之间的差异,asp.net,.net,.net-assembly,Asp.net,.net,.net Assembly,尝试启动asp.net应用程序时,我收到以下错误消息: 错误1程序集“MyProject,版本=1.0.0.0”, 区域性=中性,PublicKeyToken=null“使用”System.Web.Http, 版本=5.2.3.0,区域性=中性,PublicKeyToken=31bf3856ad364e35' 其版本高于引用的程序集System.Web.Http, 版本=4.0.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35' 这个信息是什么意思?使用的程

尝试启动asp.net应用程序时,我收到以下错误消息:

错误1程序集“MyProject,版本=1.0.0.0”, 区域性=中性,PublicKeyToken=null“使用”System.Web.Http, 版本=5.2.3.0,区域性=中性,PublicKeyToken=31bf3856ad364e35' 其版本高于引用的程序集System.Web.Http, 版本=4.0.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35'

这个信息是什么意思?使用的程序集与引用的程序集之间有什么区别

当查看System.Web.Http程序集的属性时(通过解决方案资源管理器->我的项目->引用->System.Web.Http),我可以看到5.2.3.0


关于这类错误,有很多问题/答案,但我找不到一个能真正解释发生了什么的问题/答案。

诀窍在于
System.Web.Http
在Web应用程序初始化过程中被加载,远远早于您的项目引用。因此,当项目加载时,它正试图将同一程序集的较新版本加载到同一应用程序域中,从而导致错误

您可以在web.config中使用程序集绑定重定向:

<configuration>
  <runtime>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" 
      culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </runtime>
</configuration.