Не удалось загрузить файл или сборку "System.Web.Mvc"

Мой новый веб-приложение ASP.NET MVC работает на моей рабочей станции разработки, но не работает на моем веб-сервере...


Ошибка сервера в приложении "/".


Ошибка конфигурации

Описание: Произошла ошибка при обработке файла конфигурации, необходимого для обслуживания этого запроса. Ознакомьтесь с конкретными сведениями об ошибках ниже и соответствующим образом измените свой файл конфигурации.

Сообщение об ошибке Parser: Не удалось загрузить файл или сборку "System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" или одна из его зависимостей. Система не может найти указанный файл.

Ошибка источника:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Исходный файл: C:\inetpub\www.example.org\web.config Линия: 46

График загрузки сборки: Следующая информация может помочь определить, почему сборка "System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" не может быть загружена,

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Информация о версии: Версия Microsoft.NET Framework: 2.0.50727.3053; Версия ASP.NET: 2.0.50727.3053


Мне нужно установить AspNetMVCBeta-setup.msi на сервер? Или есть другой установщик для серверов?

enter image description here

Ответ 1

Я просто написал сообщение в блоге, обращаясь к этому. Вы можете установить ASP.NET MVC на свой сервер, или вы можете выполнить шаги здесь.


РЕДАКТИРОВАТЬ: (по jcolebrand) Я прошел через эту ссылку, затем имел ту же проблему, что Victor ниже, поэтому я предлагаю вам также добавить их:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

Ответ 2

Я столкнулся с той же проблемой, что и sgriffinusa. В дополнение к ссылкам в статье Фила предлагается: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx. Я добавил:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

Godaddy Deployment работала отлично. Выключите пользовательские ошибки и добавьте ссылки для исправления ошибок. Это должно привести вас в правильном направлении.

Ответ 3

Установка MVC непосредственно на вашем веб-сервере является одним из вариантов, так как тогда сборки будут установлены в GAC. Вы также можете разворачивать сборки, которые могут помочь вашему серверу очистить сборку до выпуска, пока не появится окончательная версия.

Фил Хаак опубликовал пару дней назад хорошую статью о том, как развернуть MVC вместе с вашим приложением, поэтому нет необходимости устанавливать напрямую:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

Ответ 4

Я столкнулся с этой же проблемой, пытаясь развернуть мое веб-приложение MVC3 Razor на общем хостинге GoDaddy. Есть некоторые дополнительные DLL файлы, на которые нужно ссылаться. Подробности здесь: http://paulmason.biz/?p=108

В основном вам нужно добавить ссылки на следующее в дополнение к тем, которые перечислены в сообщении @Haacked, и установить их для развертывания локально, как описано.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

Ответ 5

В VS2010 щелкните правой кнопкой мыши проект в обозревателе решений и выберите "Добавить развертываемые зависимости". Затем установите флажки, связанные с MVC, в следующем диалоговом окне.

Это создает в проекте папку '_bin_deployableAssemblies', которая содержит все DLL файлы, упомянутые в других ответах. Я считаю, что они копируются в папку bin при создании пакета развертывания.

Ответ 6

Простое исправление. В VS2010 щелкните правой кнопкой мыши проект MVC, выберите "Добавить разворачиваемые зависимости...", выберите нужные параметры и нажмите "ОК"

Ответ 7

Мы хотим добавить его, потому что мы создаем библиотеку классов, которая его использует.

Для меня это здесь...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

Ответ 8

Имел ту же самую проблему и добавил все сборки, которые они сказали, но все же получил ту же ошибку.

вам нужно сделать " Конкретная версия" = False.

Specific version should be false.

Ответ 9

Быстрое и простое решение.. Я столкнулся с этой проблемой с Microsoft.AspNet.Mvc -Version 5.2.3, и после прохождения всех этих потоков я нашел простейшее решение.

Просто выполните следующие действия:

  • Откройте диспетчер пакетов NuGet в Visual Studio для вашего проекта.
  • Поиск Microsoft.AspNet.Mvc
  • При обнаружении измените действие на удаление и удаление его.
  • После этого установите его еще раз и попробуйте сейчас

Это автоматически исправит все проблемы со ссылками. См. Изображение ниже:

введите описание изображения здесь

Ответ 10

Если вы НЕ используете хостинг-провайдера, и у вас есть доступ к серверу для установки... Затем установите средства обновления MVC 3, сделайте это... это сэкономит вам много часов на сервере Windows 2003/IIS6 машина., Я прокомментировал эту страницу здесь Несоответствие номера версии Nuget.Core.dll

Ответ 11

В дополнение к сообщению Haack, Hanselman также имеет аналогичную должность. BIN Развертывание ASP.NET MVC 3 с помощью Razor на Windows Server без установки MVC

Для меня решение "Копировать локальное = истинное" было недостаточно, потому что ссылки на проект сайта не включали все отсутствующие DLL файлы. Как упоминает Скотт в своем посте, мне также нужно было получить дополнительные DLL из следующей папки в моей коробке разработки: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies. Сообщение об ошибке сообщило мне, какая DLL отсутствовала (System.Web.Infrastructure, System.Web.Razor и т.д.). Я продолжал добавлять каждую пропущенную dll, один за другим, пока она не сработала.

Ответ 12

Я сделал "Update-Package -reinstall Microsoft.AspNet.Mvc", чтобы исправить его в Visual Studio 2015.

Ответ 14

Также проверьте версию сборки в файле web.config в папке Views и убедитесь, что она соответствует. Иногда я забываю, что в этом месте есть второй web.config.

Ответ 15

У меня была такая же проблема с кучей файлов сборки после перемещения проекта в другое решение.

Для меня файл web.config пытался добавить эту сборку:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Мысль о том, что ссылка в проекте указывала на версию 3.0.0.0 (щелкните ссылку и прокрутите вниз до свойств). Поэтому я просто изменил ссылочную версию в файле web.config.

Я не знаю, было ли это всего лишь какая-то ошибка. Проблема с добавлением всех других ссылок заключалась в том, что ссылки появились в файле конфигурации, но на самом деле он вообще не упоминался в проекте (внутри проводника решений), а необходимые файлы не копировались с остальными файлами проекта, вероятно, из-за отсутствия "copy local = true"

Теперь я не смог найти эти сборки в добавляемых сборках (щелкнув правой кнопкой мыши ссылку и попытавшись добавить их из сборок или расширений). Вместо этого я создал новое решение MVC, которое добавило все собранные нами сборки и ссылки, которые мне нужны, и найти их в новых ссылках на проекты в проводнике решений и найти их путь в окне свойств для ссылки.

Затем я просто скопировал библиотеки, которые мне нужны, в другой проект и ссылался на них.

Ответ 16

Пробовав все и все еще не получилось, это было моим решением: я вспомнил, что у меня было и последнее обновление версии MVC в моей Visual Studio, поэтому я запускаю проект из другой Visual studio (на другом компьютере), а затем загружал dll-s, и это сработало. возможно, это поможет кому-то...

Ответ 17

Я использую Jenkins с проектами .net и имел проблемы с ссылками MVC 4.

Я, наконец, решил свою проблему, используя функциональность поисковой системы .Net, основанная на реестре, используя:

"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v2.0.50727\AssemblyFoldersEx"

Вы можете создать подраздел и установить ключ по умолчанию на "c:\myreferenceedir", например.

Он сохранил меня с версиями MVC, а также с веб-страницами ASP.net.

Полезно добавлять ссылки на "Добавить справочный диалог"

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/

Ответ 18

Я добавил "Microsoft ASP.NET Razor", используя "Управление пакетами NuGet".

С помощью добавления ссылок по какой-то причине у меня только были System.Web.Helpers 1.0.0 и 2.0.0... но не 3.0.0.

Другой способ, который сработал, состоял в том, чтобы удалить ссылки на System.Web.Mvc и System.Web.Http... затем повторно добавить их, бросив в расположение пакетов в файле csproj (вы можете легко редактировать проект с текстовым редактором):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>

Ответ 19

Как отмечали другие, добавьте эти ссылки в визуальные студии с Copy Local, установленными на true. (Мне также пришлось добавить System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages

Ответ 20

Важным моментом является файл web.config. Некоторые пакеты могут блокировать переадресацию привязки, вызывая хаос (пакет изгоев был в домашнем пакете, в котором я не удалял файл web.config из пакета или не убедился, что web.config в в пакете нет никаких переадресаций привязки. Например, удалив дубликат и неверный node разрешает этот

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <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.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

путем удаления строк с 8 по 24 исправляет сборку.