4

我有 3 个项目的解决方案:

Solution.Web.Core - 通用类
Solution.Web.Mvc - MVC 4
Solution.Web.Api - Web Api 2 aka running ASP.NET 5.0 (beta-1) 程序集

我将 WebApi 设置为 MVC 应用程序的子应用程序(在 IIS 中),但是,我无法完全隔离该项目。

因为Solution.Web.Core有一些对 ASP.NET 4.0 程序集的引用,如果我在运行时添加对这个项目的引用,Solution.Web.Api我会在运行时得到以下异常:

无法加载文件或程序集“System.Net.Http.Formatting,Version=5.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

如何防止此错误发生,Solution.Web.Api以便Solution.Web.Core尽管引用 ASP.NET 的旧程序集版本,我仍可以引用它?

注意:由于错误显示“System.Net.Http.Formatting 或其依赖项之一”,老实说,我什至不确定如何找出确切的违规程序集。

4

2 回答 2

2

将 View 部分的 Web.Config 从

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=5.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=5.2.3.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
于 2015-03-03T09:55:01.573 回答
1

我刚开始使用 MVC 5 + Web Api 2 就解决了这个问题。

但是,刚刚发现这个博客帖子的答案似乎对我有用:

要允许 MVC 4 项目与 5.0 beta 程序集(至少是博客文章中的 CORS 程序集)配合使用,请将 web 配置更改为以下内容:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:bcl="urn:schemas-microsoft-com:bcl">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
  </dependentAssembly>

于 2013-07-14T18:23:06.180 回答