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

200

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


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


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

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

Сообщение об ошибке синтаксического анализатора: не удалось загрузить файл или сборку 'System.Web.Mvc, версия = 1.0.0.0, культура = нейтральная, 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, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35».

WRN: регистрация привязки сборки выключена.
Чтобы включить ведение журнала ошибок привязки сборки, задайте для параметра реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) значение 1.
Примечание. Некоторое снижение производительности связано с регистрацией ошибок привязки сборки.
Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

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


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

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

Зак Петерсон
источник

Ответы:

215

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


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

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Haacked
источник
6
Примечание. Если у вас установлен MVC4 (в настоящее время бета-версия), вы захотите получить v1.0 этих DLL-библиотек, вы также захотите получить System.Web.Helpers (по крайней мере, мне это нужно).
Tracker1
1
-1 Ваше сообщение, на которое вы ссылаетесь, не объясняет, как получить Microsoft.Web.Infrastructure на веб-сервер через механизм публикации. Необходимость установки на сервере напрямую, вроде как.
Марк Роджерс
1
с Visual Studio 2010 это стало намного проще, как объяснено здесь: britishdeveloper.co.uk/2011/06/…
Даниэль
или здесь, если вы не используете Web Deploy britishdeveloper.co.uk/2011/05/…
Jeroen K
Я должен был скопировать папку bin, а затем снова опубликовать, то есть, если вы не используете Deploy Package.
Роберт Кох
41

Я столкнулся с той же проблемой, что и 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 работал отлично. Выключите пользовательские ошибки и добавьте ссылки для исправления ошибок. Это должно привести вас в правильном направлении.

Виктор Юрий
источник
26

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

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

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

Мэтт Руддер
источник
25

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

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

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
sgriffinusa
источник
Спасибо, человек, после добавления ссылки вручную и последующего их локального развертывания, это решило проблему для MVC3!
Stefanvds
То же самое и здесь. Хорошее руководство по добавлению этих дополнительных DLL. Спасибо!
Майк Л
То же самое и здесь. Не на GoDaddy, а на сервере моей компании, так что это должен быть простой случай.
TJKjaer
13

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

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

warrickh
источник
9

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

ось
источник
8

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

Просто следуйте инструкциям:

  1. Откройте диспетчер пакетов NuGet в Visual studio для вашего проекта
  2. Поиск Microsoft.AspNet.Mvc
  3. Если найдено, измените действие на Удалить и удалите его
  4. После этого установите его снова и попробуйте сейчас

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

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

Мухаммед Амир
источник
7

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

Оказывается, вам нужно сделать « Specific Version » = False.

Конкретная версия должна быть ложной.

Ромео
источник
В качестве альтернативы вам следует переключить «Копировать локальный» на «Истина», если он не включен,
AStopher
6

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

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

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

Дэйв Шинкл
источник
3

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

Том Стиккель
источник
3

В дополнение к посту Haack, у Хансельмана также есть подобный пост. БИН Delploying ASP.NET MVC 3 с Razor на Windows Server без установленного MVC

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

Джеймс Лаврук
источник
3

Я сделал «Update-Package - переустановите Microsoft.AspNet.Mvc», чтобы исправить это в Visual Studio 2015.

Olaj
источник
3

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

    <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 исправляет сборку.

ПБО
источник
2

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

Дейв
источник
2

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

Для меня 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, которое добавило все необходимые мне сборки и ссылки, и нашел их по ссылкам на новые проекты в обозревателе решений и нашел их путь в окне свойств для ссылки.

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

Микаэль Пуусаари
источник
1

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

Матан Л
источник
0

Я использую 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/

Jenzo
источник
0

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

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
roo2
источник
0

Я добавил «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>
Брайан Райс
источник