Не удалось загрузить файл или сборку 'System.Web.Mvc' - PullRequest
197 голосов
/ 06 ноября 2008

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


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


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

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

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

Ответы [ 20 ]

3 голосов
/ 30 июня 2011

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

3 голосов
/ 04 июля 2011

В дополнение к посту Haack, у Хансельмана также есть аналогичный пост. BIN Развертывание 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 по одному, пока она не заработала.

2 голосов
/ 19 апреля 2016

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

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

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

2 голосов
/ 16 ноября 2014

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

2 голосов
/ 22 февраля 2011

Этот пост может быть дубликатом Фила, но может помочь:

http://www.tugberkugurlu.com/archive/deployment-of-asp-net-mvc-3-rc-2-application-on-a-shared-hosting-environment-without-begging-the-hosting-company

0 голосов
/ 03 сентября 2015

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

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
0 голосов
/ 03 марта 2015

Я добавил «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>
0 голосов
/ 23 апреля 2013

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

0 голосов
/ 20 января 2017

Важным соображением является файл 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 исправляет сборку.

0 голосов
/ 07 февраля 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...