Проблемы зависимостей развертывания MVC3
Я только что попробовал развернуть приложение MVC3 в нашей среде хостинга IIS7, но я получаю следующее исключение:
Не удалось загрузить тип 'Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility' от сборки "Microsoft.Web.Infrastructure, Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35. Описание: Необработанное исключение произошли во время выполнения текущий веб-запрос. Пожалуйста, просмотрите трассировки стека для получения дополнительной информации о ошибка и где она возникла в код.
Сведения об исключении: System.TypeLoadException: не удалось тип нагрузки 'Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility' от сборки" Microsoft.Web.Infrastructure, Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.
Любые предложения?
Приложение не развертывается в бине, поскольку я установил веб-страницы ASP.Net и MVC3 на самом веб-сервере.
Ответы
Ответ 1
Это потому, что Microsoft.Web.Infrastructure
не находится в вашем GAC. Вы должны добавить эту ссылку в свой проект. Щелкните правой кнопкой мыши ссылку и перейдите к свойствам, а затем скопируйте ее в локальную в значение true.
![Copy Local]()
Выход (игнорировать Ninject и NCU):
![alt text]()
Ответ 2
Оказалось, что после выполнения очистки ссылок он удалил Microsoft.Web.Infrastructure
, но не из файла packages.config. После попытки добавить его снова, используя Package Manager Console
, Visual Studio говорит, что он уже установлен, который является ложным, потому что он был удален.
Затем я удалил строку кода в файле packages.config
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
и снова выполнил команду
PM> Install-Package Microsoft.Web.Infrastructure
После этого теперь он отлично работает.
Ответ 3
Microsoft.Web.Infrastructure
теперь является пакетом Nuget, и его можно добавить в проект, чтобы включить развертывание каталога bin -
http://nuget.org/packages/Microsoft.Web.Infrastructure
Ответ 4
Убедитесь, что файл root.config на вашем сервере (расположенный где-то здесь: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config
) имеет следующую запись:
<configuration>
<location allowOverride="true">
<system.web>
<fullTrustAssemblies>
<add
assemblyName="Microsoft.Web.Infrastructure"
version="1.0.0.0"
publicKey="[bunch of letters and numbers]"
/>
Если он отсутствует, значит, кто-то испортил установку .NET 4.