Nie można załadować pliku lub zestawu „System.Web.Mvc”

200

Moja nowa aplikacja internetowa ASP.NET MVC działa na mojej stacji roboczej, ale nie działa na moim serwerze internetowym ...


Błąd serwera w aplikacji „/”.


Błąd konfiguracji

Opis: Wystąpił błąd podczas przetwarzania pliku konfiguracyjnego wymaganego do obsługi tego żądania. Sprawdź szczegółowe informacje o błędzie poniżej i odpowiednio zmodyfikuj plik konfiguracyjny.

Komunikat o błędzie analizatora składni: Nie można załadować pliku lub zestawu „System.Web.Mvc, wersja = 1.0.0.0, Kultura = neutralny, PublicKeyToken = 31bf3856ad364e35” lub jednej z jego zależności. System nie może odnaleźć określonego pliku.

Błąd źródła:

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"/>

Plik źródłowy: C: \ inetpub \ www.example.org \ web.config Linia: 46

Śledzenie ładowania zestawu : Poniższe informacje mogą być pomocne w ustaleniu, dlaczego nie można załadować zestawu „System.Web.Mvc, wersja = 1.0.0.0, Kultura = neutralny, PublicKeyToken = 31bf3856ad364e35”.

WRN: Rejestrowanie powiązania zestawu jest wyłączone.
Aby włączyć rejestrowanie niepowodzenia powiązania zestawu, ustaw wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) na 1.
Uwaga: Z rejestrowaniem błędów powiązania zestawu wiąże się pewna utrata wydajności.
Aby wyłączyć tę funkcję, usuń wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Informacje o wersji: Microsoft .NET Framework Wersja: 2.0.50727.3053; Wersja ASP.NET: 2.0.50727.3053


Czy muszę zainstalować AspNetMVCBeta-setup.msi na serwerze? Czy istnieje inny instalator dla serwerów?

wprowadź opis zdjęcia tutaj

Zack Peterson
źródło

Odpowiedzi:

215

Właśnie napisałem blog na ten temat. Możesz zainstalować ASP.NET MVC na swoim serwerze LUB możesz postępować zgodnie z instrukcjami tutaj .


EDYCJA: (autor: jcolebrand) Przejrzałem ten link, a następnie miałem ten sam problem, co poniżej Victor , więc sugeruję również dodanie tych:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Haacked
źródło
6
Uwaga: jeśli masz zainstalowany MVC4 (obecnie beta), będziesz chciał pobrać v1.0 tych bibliotek DLL, będziesz także chciał pobrać System.Web.Helpers (przynajmniej ja potrzebowałem).
Tracker1
1
-1 Twój post, do którego prowadzisz link, nie wyjaśnia, jak uzyskać Microsoft.Web.Infrastructure na serwer sieciowy za pośrednictwem mechanizmu publikowania. Konieczność instalowania rzeczy bezpośrednio na serwerze, rodzaj sux.
Mark Rogers,
1
w Visual Studio 2010 stało się to o wiele łatwiejsze, jak wyjaśniono tutaj: britishdeveloper.co.uk/2011/06/…
Daniël Tulp
lub tutaj, jeśli nie używasz Web Deploy britishdeveloper.co.uk/2011/05/…
Jeroen K
Musiałem podłączyć folder bin, a następnie ponownie opublikować, to znaczy, jeśli nie używasz pakietu Deploy.
Robert Koch
41

Natknąłem się na ten sam problem co sgriffinusa. Oprócz odniesień artykuł Phila sugeruje: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Dodałem te:

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

Wdrażanie Godaddy działało idealnie. Wyłącz niestandardowe błędy i dodaj odniesienia, aby je poprawić. To powinno poprowadzić cię we właściwym kierunku.

Victor Juri
źródło
26

Jedną z opcji jest instalacja MVC bezpośrednio na serwerze sieciowym, ponieważ wtedy zespoły zostaną zainstalowane w GAC. Możesz także bin wdrożyć zestawy, co może pomóc w utrzymaniu serwera z dala od zestawów przedpremierowych, dopóki nie będzie dostępna wersja ostateczna.

Phil Haack opublikował kilka dni temu fajny artykuł na temat wdrażania MVC wraz z aplikacją, więc nie trzeba instalować bezpośrednio:

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

Matt Rudder
źródło
25

Natknąłem się na ten sam problem, próbując wdrożyć moją aplikację internetową MVC3 Razor na współdzielonym hostingu GoDaddy. Istnieje kilka dodatkowych plików DLL, do których należy się odwoływać. Szczegóły tutaj: http://paulmason.biz/?p=108

Zasadniczo musisz dodać odniesienia do poniższych, oprócz tych wymienionych w poście @ Haacked, i ustawić je do wdrażania lokalnego zgodnie z opisem.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
sgriffinusa
źródło
Dzięki człowieku, po ręcznym dodaniu referencji, a następnie wdrożeniu ich lokalnie rozwiązało to problem dla MVC3!
Stefanvds
To samo tutaj. Dobre wskazówki dotyczące dodawania tych dodatkowych bibliotek DLL. Dzięki!
Mike L
To samo tutaj. Nie na GoDaddy, ale na serwerze mojej firmy, więc musi to być zwykły przypadek generel.
TJKjaer
13

W VS2010 kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz „Dodaj możliwe do wdrożenia zależności”. Następnie zaznacz pola wyboru związane z MVC w następującym oknie dialogowym.

Spowoduje to utworzenie folderu „_bin_deployableAssemblies” w projekcie, który zawiera wszystkie pliki .dll wymienione w innych odpowiedziach. Sądzę, że zostaną one skopiowane do folderu bin podczas tworzenia pakietu wdrażania.

warrickh
źródło
9

Prosta poprawka. W VS2010 kliknij prawym przyciskiem myszy projekt MVC, wybierz „Dodaj zależne od wdrożenia ...”, wybierz żądane opcje i kliknij OK


źródło
8

Szybkie i proste rozwiązanie: napotkałem ten problem z Microsoft.AspNet.Mvc -Version 5.2.3 i po przejściu przez wszystkie te wątki znalazłem najprostsze rozwiązanie.

Wystarczy wykonać następujące kroki:

  1. Otwórz Menedżera pakietów NuGet w Visual Studio dla swojego projektu
  2. Wyszukaj Microsoft.AspNet.Mvc
  3. Po znalezieniu zmień działanie na Odinstaluj i Odinstaluj
  4. Po zakończeniu zainstaluj go ponownie i wypróbuj teraz

To automatycznie naprawi wszystkie problemy z referencjami. Zobacz zdjęcie poniżej:

wprowadź opis zdjęcia tutaj

Muhammad Amir
źródło
7

Miałem ten sam problem i dodałem cały zespół, który powiedzieli, ale nadal otrzymywał ten sam błąd.

okazuje się, że trzeba ustawić „ Określoną wersję ” = False.

Określona wersja powinna być fałszywa.

Romeo
źródło
Ewentualnie należy zmienić
opcję
6

Chcemy go dodać, ponieważ tworzymy bibliotekę klas, która z niego korzysta.

Dla mnie jest tutaj ...

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

Dave Shinkle
źródło
3

Jeśli NIE korzystasz z dostawcy hostingu i masz dostęp do serwera, aby zainstalować ... Następnie zainstaluj narzędzia aktualizacji MVC 3, zrób to ... pozwoli to zaoszczędzić godziny problemów na serwerze z systemem Windows 2003 / IIS6. , Skomentowałem tutaj tę niezgodność numeru wersji Nuget.Core.dll

Tom Stickel
źródło
3

Oprócz postu Haack, Hanselman ma również podobny post. BIN Wdrażanie ASP.NET MVC 3 z Razor na Windows Server bez zainstalowanego MVC

Dla mnie rozwiązanie „Kopiuj lokalnie = prawda” było niewystarczające, ponieważ odniesienia do projektu mojej witryny nie obejmowały wszystkich brakujących bibliotek dll. Jak Scott wspomina w swoim poście, musiałem również uzyskać dodatkowe biblioteki DLL z następującego folderu na moim polu programistycznym: C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. Komunikat o błędzie poinformował mnie, którego dll brakuje (System.Web.Infrastructure, System.Web.Razor itp.) Kontynuowałem dodawanie każdego brakującego dll, jeden po drugim, aż zadziałało.

James Lawruk
źródło
3

Zrobiłem „Pakiet aktualizacji - ponownie zainstaluj Microsoft.AspNet.Mvc”, aby go naprawić w Visual Studio 2015.

Olaj
źródło
3

Ważnym zagadnieniem jest plik web.config. Niektóre pakiety mogą zniszczyć przekierowania wiążące się z spustoszeniem (nieuczciwy pakiet był w pakiecie wewnętrznym, że nie usunąłem pliku web.config z pakietu lub upewniłem się, że plik web.config w pakiecie nie ma żadnych przekierowań wiązania, na przykład usunięcie duplikatu i niepoprawny węzeł rozwiązuje ten problem

    <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>

usunięcie linii od 8 do 24 naprawia kompilację.

PBo
źródło
2

Sprawdź również wersję zestawu w pliku web.config w folderze Views i upewnij się, że jest zgodna. Czasami zapominam, że w tej lokalizacji jest drugi plik web.config.

Dave
źródło
2

Miałem ten sam problem z wieloma plikami asemblacji po przeniesieniu projektu do innego rozwiązania.

Dla mnie web.configplik próbował dodać ten zestaw:

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

Myślałem, że odniesienie w projekcie wskazuje na wersję 3.0.0.0(kliknij odnośnik i przewiń na dół właściwości). Dlatego właśnie zmieniłem wersję referencyjną w web.configpliku.

Nie wiem, czy to był jakiś błąd. Problem z dodawaniem wszystkich innych referencji polegał na tym, że referencje pojawiły się w pliku konfiguracyjnym, ale w ogóle nie były w ogóle referencyjne w projekcie (w eksploratorze rozwiązań) i potrzebne pliki nie zostały skopiowane z resztą plików projektu, prawdopodobnie z powodu nie bycia"copy local = true"

Teraz nie byłem w stanie znaleźć tych zespołów w możliwych do dodania zespołach (klikając prawym przyciskiem myszy odnośnik i próbując dodać je z zespołów lub rozszerzeń). Zamiast tego stworzyłem nowe rozwiązanie MVC, które dodało wszystkie potrzebne zespoły i referencje, i znajdując je pod referencjami nowych projektów w eksploratorze rozwiązań i znajdując ich ścieżkę w oknie właściwości referencji.

Następnie skopiowałem potrzebne biblioteki do innego projektu i odniosłem się do nich.

Mikael Puusaari
źródło
1

Po wypróbowaniu wszystkiego i wciąż nieudanym, to było moje rozwiązanie: przypomniałem sobie, że ostatnio miałem błąd i zaktualizowałem wersję MVC w moim Visual Studio, więc uruchomiłem projekt z innego Visual Studio (innego komputera), a następnie przesłałem dll-y i zadziałało. może to pomoże komuś ...

Matan L.
źródło
0

Używam Jenkinsa z projektami .net i miałem problemy z referencjami do MVC 4.

Ostatecznie rozwiązałem mój problem, używając funkcji wyszukiwarki referencyjnej .Net opartej na rejestrze, używając:

„HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx”

Możesz utworzyć podklucz i ustawić domyślny klucz na przykład na „c: \ myreferenceedir”.

Uratowało mnie to z wersjami MVC, a także ze stronami sieci Web ASP.net.

Przydatne do dodawania odniesień do „okna dialogowego dodawania odniesień”

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

Jenzo
źródło
0

Jak wspomnieli inni, dodaj te odniesienia do studiów wizualnych z Copy Localustawionym na true. (Musiałem również dodać System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
roo2
źródło
0

Dodałem „Microsoft ASP.NET Razor” przy użyciu Zarządzaj pakietami NuGet.

Z Dodaj referencje z jakiegoś powodu miałem tylko System.Web.Helpers 1.0.0 i 2.0.0 ... ale nie 3.0.0.

Inną opcją, która działała ode mnie, było usunięcie odniesień do System.Web.Mvc i System.Web.Http ... a następnie ponowne dodanie ich przeglądania w lokalizacjach pakietów w pliku csproj (najłatwiej można edytować projekt za pomocą edytor tekstu):

<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>
Brian Rice
źródło