【问题标题】:ASP.NET MVC Versioning IssueASP.NET MVC 版本控制问题
【发布时间】:2010-11-03 01:34:02
【问题描述】:

我有一个 Web 应用程序,其中包含几个使用 MVC 的不同子网站。我遇到的问题是两个子网站使用不同的 MVC 版本。一个最近升级到使用 1.0 版本,一个卡在早期的预览版本上。

将其中一个子网站升级到 1.0 后,使用预览版的另一个网站失败并出现以下错误:

Could not load type 'System.Web.HttpContextWrapper2' from assembly 'System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

我怀疑问题是由于 System.Web.Abstractions DLL 的 1.0 版本和预览版本都标记为版本 3.5.0.0,但实际上包含不同的类。因此,当预览应用引用 System.Web.Abstractions 时,它会获取已加载的 MVC 1.0 版本,而不是其 bin 目录中的预览版本。

有什么方法可以强制运行时将程序集加载两次,就好像它们是两个不同的版本一样,即使它们实际上标有相同的版本号?我正在考虑在我的网络配置中使用该标签,但不能完全理解我将如何使用它来执行此操作,或者它是否甚至可以实现我需要在这里做的事情。

【问题讨论】:

  • 你真的需要两个版本并排运行,卸载以前的版本会解决你的问题吗?
  • 我确实需要两个版本并排运行 - 1.0 版本中存在重大更改,导致针对预览版本编写的代码不再有效。我可以将使用预览版的应用程序转换为使用 1.0,但如果可能的话,我宁愿避免现在这样做。
  • 我最终只是将应用程序转换为 MVC 1.0。无论如何,它最终必须完成,但我仍然想知道是否有办法做到这一点。

标签: asp.net-mvc web-config .net-3.5


【解决方案1】:

我们遇到了类似的问题。我们的大多数应用程序都使用 MVC 3.0。我们正在使用一个使用 MVC 1.0 的内容管理系统。我们遇到了兼容性问题,因为我们试图引用内容管理系统中的一个应用程序组件。当我们将两个版本的 MVC 都放入 GAC 时,问题就解决了。

【讨论】:

    【解决方案2】:

    您可以放置​​ System.Web.Abstractions.dll、System.Web.Mvc.dll 和 System.Web.Routing.dll每个子网站的 ~/bin 文件夹中具有相应版本(来自 MVC 预览版和来自 MVC 1.0)的程序集。

    更新:

    尝试使用 ASP.NET MVC 预览版从您的应用的 web.config 中删除它:

    <system.web>
        <assemblies>
            <!--<add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />-->
        </assemblies>
    

    【讨论】:

    • 不确定您的意思。 3.5 SP1 安装在服务器上,因此 MVC 1.0 已经适用于所有应用程序。需要预览版的应用程序在其 /bin 文件夹中有预览箱,但似乎它们被忽略了,因为 SP1 将 1.0 箱放在 GAC 中(并且预览箱具有相同的版本号)
    • 您是否尝试从使用 ASP.NET MVC 预览的应用程序的 web.config/system.web/compilation/assemblies 部分中删除 Abstractions/Mvc/Routing 的 ?
    • @eu-ge-ne - 是的,刚刚尝试过,但没有任何效果。仍然收到与以前相同的错误消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多