Я попытался загрузить свой веб-сайт на сервер. Он отлично работал с моим локальным хостом, поэтому я загрузил все из своей wwwroot
папки localhost на сервер и изменил строку подключения.
Но есть такая ошибка:
Exception information:
Exception type: InvalidOperationException
Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
at RouteDebug.PreApplicationStart.Start()
Проект был nopcommerce
.
Что нужно сделать, чтобы исправить эту ошибку?
c#
asp.net-mvc
user1348351
источник
источник
Ответы:
Вам нужно будет включить dll в свой проект и добавить ссылку на нее.
Вот ссылка на аналогичную проблему уже в стеке : Проблемы зависимости развертывания MVC3
источник
Оказывается, после выполнения эталонной очистки он был удален
Microsoft.Web.Infrastructure
, но не из файла packages.config. После попытки добавить его снова с помощьюPackage Manager Console
Visual Studio сообщает, что он уже установлен, что неверно, поскольку оно было удалено.Затем я удалил строку кода в
packages.config
файле<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
и снова запустил команду
После этого теперь все работает нормально.
источник
Установка AspNetMVC3ToolsUpdateSetup, загруженная отсюда , решит эту проблему без добавления ссылки
источник
Несмотря на количество ответов, я добавлю еще один, который, ИМХО, проясняет ситуацию.
Как уже упоминали Роб и wrightmail
Microsoft.Web.Infrastructure
, это пакет NuGet (ссылка не нужна, она у вас есть в диспетчере пакетов NuGet).Судя по всему, на него ссылался ваш проект и он внезапно исчез. Может существовать ряд причин, но важно то, что, несмотря на то, что вы, возможно, включили автоматическое восстановление пакетов в Visual Studio :
для некоторых пакетов может потребоваться переустановка вручную. Я не знаю, что смущает NuGet, возможно, вручную удаляет ссылку, но вот решение, которое я обычно применяю в таких случаях. Следующая консоль PM помогает восстановить пакет с сохранением исходной версии (без обновления до возможно существующей новой):
Сохранение версии может потребоваться, если вы не хотите случайно перезаписать существующий пакет более новой версией, которая, возможно, удаляет «старые» функции, которые вы могли использовать в своем проекте.
И в качестве доказательства того, что версия не меняется, хоть и немного длинновато, вот результат выполнения команды:
PM> Update-Package Microsoft.Web.Infrastructure -Reinstall Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2' Attempting to resolve dependencies for multiple packages Resolving actions install multiple packages ... Package removal starts here... ... Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config' Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp Removed package 'WebGrease 1.5.2' from 'packages.config' Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1' Successfully uninstalled 'WebGrease 1.5.2' from DemoApp ... More package removals here. Omitted for brevity... ... Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config' Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp ... More package removals here. Omitted for brevity... ... Removed package 'Antlr 3.4.1.9004' from 'packages.config' Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages' --- Install packages (in reverse order) --- Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages' Added package 'Antlr.3.4.1.9004' to 'packages.config' Successfully installed 'Antlr 3.4.1.9004' to DemoApp ... More package installs here. Omitted for brevity... ... Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages' Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config' Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp ... More package installs here. Omitted for brevity... ... Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages' Added package 'WebGrease.1.5.2' to 'packages.config' Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1' Successfully installed 'WebGrease 1.5.2' to DemoApp Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages' Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config' ... End of package re-install. ... Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp PM>
Конечно, если вы хотите переустановить все пакеты, вам может потребоваться ознакомиться с командами обновления / установки в NuGet здесь и здесь .
источник
Я обнаружил, что, несмотря на то, что он работал на моем устройстве для разработчиков, сборка не была добавлена в проект. Найдите Microsoft.Web.Infrastructure в NuGet и установите его оттуда. Затем убедитесь, что выбрано Копировать локально.
источник
Возникла эта проблема на новом компьютере с Windows 10 на VS2015 с существующим проектом. Диспетчер пакетов 3.4.4. Восстановление пакетов включено.
Восстановление работает не полностью. Пришлось запустить следующее в командной строке диспетчера пакетов
Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall
Это внесло следующие изменения в мой файл решения, которые НЕ выполнялись при восстановлении.
Простое добавление перечисленных выше элементов в раздел ItemGroup в файле решения ТАКЖЕ решит проблему при условии, что существует .. \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll.
Проще просто выполнить -Reinstall, но хорошо понимать, что он делает по-другому с восстановлением пакета.
источник
Resharper обнаружил Microsoft.Web.Infrastructure как неиспользуемую ссылку, поэтому я удалил ее. Локально все работало нормально, но после публикации в dev я получил ту же ошибку.
Заключение, будьте осторожны при удалении ссылок, отмеченных как неиспользуемые Resharper
источник
Попробуйте установить веб-платформу с https://www.microsoft.com/web/platform/
Надеюсь, поможет.
источник
У меня была аналогичная проблема. NuGet показал, что пакет успешно установлен, но ссылка в мой проект не добавлена.
Запуск
<PM> Install-Package Microsoft.Web.InfraStructure
также не помог, поскольку менеджер пакетов все время говорил, что он уже установленНаконец, я добавил его вручную, отредактировав файл csproj и добавив следующие строки:
<Reference Include="Microsoft.Web.Infrastructure"> <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> <Private>True</Private> </Reference>
Это решило проблему.
источник
Вам необходимо загрузить платформу ASP.NET MVC на сервер, на котором размещено ваше приложение. Это быстрое исправление, просто скачайте и установите отсюда (это фреймворк MVC 3 http://www.asp.net/mvc/mvc3 ), а затем бум, вперед.
источник
Для меня
Microsoft.Web.Infrastructure.dll
отсутствовал в папке bin, он не был настроен на локальное копирование в проекте. Скопировал dll из другого проекта в решение, и страница загрузилась.источник
Сначала удалите Microsoft.Web.Infrastructure из package.config.
и снова запустил команду
PM> Install-Package Microsoft.Web.Infrastructure и убедитесь, что свойство Copy Local имеет значение true.
источник
Очень простое решение:
В Visual Studio перейдите в Инструменты / Диспетчер пакетов библиотек / Консоль диспетчера пакетов.
Хорошо провести время
источник
Вот мой сценарий.
У меня было многопроектное решение, содержащее проекты A, B, C .. N.
Проект B представлял собой библиотеку кода, содержащую фабрику
selectlist
объектов.В процессе разработки проект работал, как ожидалось, но при публикации в нашей тестовой среде я получал ошибку, с которой вы столкнулись:
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Произошло то, что произошло через диспетчер пакетов nuget, я случайно установил «Microsoft ASP.NET MVC», который установил зависимости для:
Как ни крути, Microsoft.AspNet.WebPages зависит от «Microsoft.Web.Infrastructure».
Мое решение заключалось в удалении трех упомянутых выше пакетов (MVC, Razor, WebPages), затем щелкните правой кнопкой мыши ссылки> добавить ссылку> Сборки> Расширения> System.Web.MVC.
источник
Мне пришлось установить «Копировать локально» в свойствах ссылки на False, а затем обратно на True. При этом в файл .csproj добавлен параметр Private True.
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> <Private>True</Private> </Reference>
Я предполагал, что это уже установлено, так как «Копировать локально» отображалось как Истина.
источник
Я не знаю, что случилось с моим проектом, но он указал неправильный путь к DLL. Nuget установил его правильно, и он действительно был в моей файловой системе вместе с другими пакетами, но просто неправильно указан.
packages
Папка существует два каталога от моего проекта , и это происходит только одну, начав путь с..\packages\
. Я изменил путь,..\..\packages\
и это устранило мою проблему.источник
На моем компьютере зависимость Nuget не была загружена правильно, папка lib внутри пакета nuget не существовала, следовательно, возникла ошибка.
До
Я переименовал пакет Nuget в папке пакетов, и Nuget правильно повторно загрузил его с необходимой папкой lib.
После
источник
В некоторых случаях очистка проекта / решения, физическое удаление
bin/
иobj/
и восстановление будет решить такие ошибки. Это может произойти, например, когда некоторые пакеты и ссылки устанавливаются / добавляются, а затем удаляются, оставляя некоторые артефакты.Так случилось со мной
Microsoft.Web.Infrastructure
: изначально проект не требовал этой сборки. После некоторых экспериментов, чистый эффект которых в конце должен был быть нулевым, я получил это исключение. Вышеупомянутые шаги разрешили это без необходимости установки неиспользуемой зависимости.источник
У меня была такая проблема. У меня была DLL, включенная в проект, и настройка «Копировать локально» по умолчанию была истинной. Не знаю, почему это началось, ведь эта DLL была в проекте долгое время. Я слышал, что ReSharper может его удалить, но не могу сказать, что выполнил удаление неиспользуемых ссылок.
Мне помогло следующее: - Запуск «Update-Package Microsoft.Web.Infrastructure -Reinstall» в проекте, который обновил все решение, но не помог сам по себе. - Затем я просмотрел ссылки на проекты и установил для Copy Local значение false, а затем снова true. Это фактически привело к добавлению строки в файл CSPROJ под ссылкой DLL: True. Или что-то в этом роде ... В любом случае, теперь сборка копировала файлы, как и ожидалось.
источник
Итак, вот что у меня сработало при использовании VS2019. Я получал эту ошибку при попытке обновить пакеты Nuget в одном проекте, в то время как Microsoft.Web.Infrastructure находился в другом проекте в том же решении. Мне пришлось удалить папку Microsoft.Web.Infrastructure.1.0.0.0 из папки Packages моего проекта. Переустановил через nuget и потом все снова заработало. Сумасшедшие вещи.
источник