ASP.NET MVC проблема с версиями - PullRequest
0 голосов
/ 15 июня 2009

У меня есть веб-приложение с парой разных вложенных веб-сайтов, которые используют 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'

Я подозреваю, что проблема связана с тем, что версия 1.0 и предварительная версия DLL-библиотеки System.Web.Abstractions помечены как версия 3.5.0.0, но на самом деле содержат разные классы. Поэтому, когда приложение предварительного просмотра ссылается на System.Web.Abstractions, оно получает уже загруженную версию MVC 1.0 вместо версии предварительного просмотра, которая находится в каталоге bin.

Можно ли каким-либо образом заставить рабочую среду загружать сборку дважды, как если бы это были две разные версии, даже если на самом деле они помечены одинаковым номером версии? Я искал использование тега в моей веб-конфигурации, но не мог понять, как именно я буду использовать это для этого или если он даже достигнет того, что мне нужно сделать здесь.

Ответы [ 2 ]

1 голос
/ 01 мая 2012

Мы столкнулись с подобной проблемой. Большинство наших приложений используют MVC 3.0. Мы используем систему управления контентом, которая использует MVC 1.0. У нас была проблема совместимости, потому что мы пытались сослаться на один из компонентов приложения в системе управления контентом. Когда мы поместили обе версии MVC в GAC, это решило проблему.

0 голосов
/ 15 июня 2009

Вы можете поместить System.Web.Abstractions.dll , System.Web.Mvc.dll и System.Web.Routing.dll сборок с соответствующими версии (из предварительного просмотра MVC и из MVC 1.0) в папках ~ / bin каждого из ваших вложенных веб-сайтов.

ОБНОВЛЕНИЕ:

Попробуйте удалить это из web.config вашего приложения, используя предварительную версию ASP.NET MVC:

<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>
...