Komunikat o błędzie parsera: nie można załadować typu „TestMvcApplication.MvcApplication”

152

Na jednym z naszych serwerów produkcyjnych pojawia się następujący błąd. Nie wiesz, dlaczego to działa na serwerze DEV?

Opis błędu parsera : Wystąpił błąd podczas analizowania zasobu wymaganego do obsługi tego żądania. Zapoznaj się z poniższymi szczegółowymi szczegółami błędu analizy i odpowiednio zmodyfikuj plik źródłowy.

Komunikat błędu parsera : nie można załadować typu „TestMvcApplication.MvcApplication”.

Błąd źródła :

Wiersz 1: <% @ Application Codebehind = "Global.asax.cs" Inherits = "TestMvcApplication.MvcApplication" Language = "C #"%>

Plik źródłowy: /global.asax Linia: 1

Nie jestem pewien, czy ktoś wcześniej natknął się na ten błąd i jak go rozwiązano, ale dotarłem do końca. Każda pomoc będzie mile widziana.

Muszę również wspomnieć, że jest to opublikowany kod, więc wszystko jest kompilowane. Czy może być coś nie tak z ustawieniami mojego kompilatora?

Riaan Engelbrecht
źródło
możliwy duplikat Nie można załadować typu MvcApplication
Alexander Prokofyev
15
Zamknij program Visual Studio i uruchom ponownie, naprawiłem to dla mnie.
RickAndMSFT
usuń plik global.asax i dodaj nowy, a wszystko będzie dobrze.
DotNetGeek
Zdarzyło mi się to podczas wdrażania wcześniej działającej aplikacji. Coś w usługach IIS (7) przeszło w zły stan; resetowanie usług IIS rozwiązało problem.
BurnsBA

Odpowiedzi:

169

Żadna z pozostałych odpowiedzi nie pomogła. Naprawiłem mój błąd, zmieniając ścieżkę wyjściową projektu internetowego. Ustawiłem go na bin \ debug, ale projekt sieciowy nie działa, chyba że ścieżka wyjściowa jest ustawiona na po prostu „bin”

Brian Leeming
źródło
To był mój problem, spowodował tyle żalu, ponieważ żadne z innych rozwiązań tutaj nie zadziałało ..
Zack
3
+1 To też był mój problem. Komunikat o błędzie i pomoc w tej sprawie w zasadzie nie istnieje. Dzięki.
Noldorin,
4
Dla mnie bin \ dawał błąd, zmieniłem go na tylko bin. i zadziałało.
Nanu
1
U mnie problem polegał na tym, że przypadkowo wybrałem x86 jako aktywną platformę i dla tej konfiguracji ustawienia projektu były nieprawidłowe (Bin \ Debug \ x86). Zmiana z powrotem na dowolny procesor rozwiązała problem. Ale zmiana ścieżki wyjściowej również zadziałała.
Lars Udengaard
13
Tak więc zmiana ścieżki wyjściowej z bin \ Debug \ na bin usuwa błąd za mnie. Ale prawdziwe pytanie brzmi: „Dlaczego bin \ Debug nie działa w pierwszej kolejności?” Kiedy tworzę konfigurację debugowania lub wydania, chcę, aby pliki były generowane w odpowiednim katalogu bin.
Ellesedil
96

Miałem to kilka razy. Jest to szczególnie frustrujące, ponieważ działa od razu, a komunikat o błędzie nie ma pojęcia, co może być przyczyną problemu.

Aby to naprawić, kliknij prawym przyciskiem myszy tytuł projektu, w tym przypadku „TestMvcApplication”, i kliknij buduj .

Wymusza to kompilację kodu przed jego uruchomieniem. Nie pytaj mnie dlaczego, ale to było dla mnie rozwiązanie w 100% przypadków.

Andy Copley
źródło
4
+1 Mnie też. Próbowałem wielu rzeczy, a mówiąc „rzeczy” mam na myśli „dzikie domysły”. Dobra odpowiedź!
Bob Kaufman
W moim przypadku miałem IIS wskazujące na witrynę MVC, która nie została wcześniej zbudowana. Doh. Oczywiście, zbudowanie go naprawiło to.
Edgar,
5
Otrzymałem również ten błąd podczas zmiany nazwy projektu, ale zapomniałem zmienić przestrzeni nazw używanej przez global.asax.cs.
Drogo
1
Jesteś dżentelmenem i panem, nawet nie pomyślałeś o zrobieniu na tym kompilacji. Dzięki!
Ben Black
2
W moim przypadku z jakiegoś powodu mój projekt nie był ustawiony na kompilację we właściwościach konfiguracji rozwiązania: i.imgur.com/kp73sGQ.png
Matthew Lock,
24

Zauważyłem, że kiedy jesteś zmuszony używać Menedżera konfiguracji do uruchomienia na platformie x86 lub jakiejkolwiek innej niż standardowe ustawienia projektu „po wyjęciu z pudełka”, IDE tworzy kilka podkatalogów w folderze bin dla projektu internetowego.

Gdy to się zacznie, jeśli serwer Cassini jest uruchomiony, projekt nie będzie działał poprawnie.

Naprawiłem to, przechodząc do właściwości projektu internetowego -> Ustawienia kompilacji i zmieniając ścieżkę wyjściową na bin \

Następnie odbuduj i wszystko działa tak, jak powinno.

DamoDBear
źródło
Bingo, to rozwiązanie również mi się sprawdziło. Dziękuję Ci!
moshjeier
U mnie też zadziałało - czy to nie jest błąd?
Matt Wilko,
I sprawdź, czy CheckBox jest sprawdzony pod kątem kompilacji
Daniel Bişar
Jeśli kiedykolwiek byłeś w Ohio hmu, ponieważ kupuję ci 10 piw, patrzyłem na różne sugestie przez ponad 3 godziny
Andrew Afternoon-Delight Hayde
9

Po długim ciężkim spojrzeniu doszedłem tutaj do prawdziwego problemu.

Zestawy zostały uszkodzone przez klienta FTP, którego użyłem do przesłania plików do hostowanego środowiska.

Zmieniłem klienta FTP i wszystko działa zgodnie z przeznaczeniem.

Riaan Engelbrecht
źródło
9

Miałem ten sam problem: mój był taki, że projekt sieciowy miał platformę docelową x86. Pracowałem na komputerze 64-bitowym; inne projekty w rozwiązaniu zostały ustawione na 64-bitowe.

Aby sprawdzić ustawienia, kliknij projekt prawym przyciskiem myszy i wybierz opcję Właściwości. Na karcie Kompilacja sprawdź wartość „Platforma docelowa”.

Sprawdź również konfigurację kompilacji rozwiązania (menu kompilacji> Configuration Manager), aby sprawdzić, czy wszystkie projekty są tworzone na tej samej platformie.

W obu przypadkach upewnij się, że sprawdziłeś ustawienia zarówno dla trybu debugowania, jak i trybu wydania - w przeciwnym razie będziesz działać na swoim komputerze, ale nie podczas wdrażania!

teedyay
źródło
Musiałem połączyć tę odpowiedź z odpowiedzią od @brockstaylor poniżej, aby rozwiązać ten problem na Umbraco 7.1.6
devinbost
9

Wypróbowałem wszystkie powyższe rozwiązania, ale bez powodzenia. Dodanie linii <add assembly="*" />do web.config naprawiło to za mnie. (Możesz także dodać do pliku machine.config lub root web.config odpowiednią wersję frameworka .NET, nie próbowałem tego). Dzięki wsparciu MS za rozwiązanie.

Manish Jain
źródło
To był mój problem. Musiałem <assemblies><clear/>...zapobiec dziedziczeniu odwołań do zestawów z aplikacji nadrzędnej w zagnieżdżonej aplikacji IIS.
Craig Celeste
Nigdy tego nie potrzebowałem… potem, niespodziewanie, napotkałem ten problem na jednej z moich maszyn deweloperskich. Nie wiem, dlaczego to się zaczęło, ale to jedyna rzecz, która go rozwiązała
Pascal
9

Miałem coś, co wyglądało na ten sam błąd. Wypróbowałem wiele sugestii z wielu stron, ale problem polegał na tym, że ustawiłem na stronie niewłaściwą wersję .Net

Bez względu na to, ile ponownych kompilacji lub osób mówiących „problem z konfiguracją”, nikt nie zauważył, że wersja .net wymaga sprawdzenia.

Carl Wright
źródło
8

To się dzieje ze mną, kiedy zmieniam nazwę projektu / rozwiązania. Przejdź do folderu projektu w eksploratorze Windows (wyjdź z VS). Znajdź i otwórz plik Global (może znajdziesz 2 pliki, otwórz, które nie mają rozszerzenia ".asax.cs") i edytuj wiersz błędu, podając poprawną ścieżkę. Powodzenia!

Paulo
źródło
To świetna odpowiedź, należy ją bardziej docenić - zdarza się zmiana nazwy aplikacji, a takie błędy są irytujące!
Bartosz
7

Doświadczyłem dokładnie tego samego problemu kilka dni temu - o ile wiem, był to problem z 64-bitowymi usługami IIS z 32-bitową aplikacją internetową. Zmieniliśmy nasz serwer produkcyjny na 32-bitowy i ten problem zniknął.

Jaco Pretorius
źródło
5

Upewnij się, że domyślna przestrzeń nazw we właściwościach projektu sieci Web jest taka sama jak przestrzeń nazw w pliku Global.asax.cs. Zmodyfikowałem domyślną przestrzeń nazw, aby uczynić ją przestrzenią podrzędną, zmieniając ją z powrotem, rozwiązując ten problem.

Ace Hyzer
źródło
4

Ze względu na kompletność podałem, jaki był mój problem i jak go rozwiązałem:

Jeśli lubisz mnie i masz httphandlers przez web.config i masz przekierowania ze swojego global.asax.cs (może w Session_Start ()), tak jak w moim przypadku, pojawia się ten błąd, jeśli twój projekt startowy nie ma zdefiniowanego odniesienia, które wskazuje na cel, na który wskazuje twój httphandler !! (ale nie otrzymasz błędów kompilacji, tylko błędy uruchomieniowe)

Więc:

  1. Dokładnie sprawdź, czy w pliku web.config znajdują się elementy zewnętrzne
  2. Dokładnie sprawdź, czy projekt startowy zawiera wszystkie potrzebne odniesienia.

Twoje zdrowie.

Chris
źródło
Dodałem formant Ajax Toolkit, ale nie dodałem odwołania do biblioteki DLL. Dzięki za twój numer 2.
pixelmeow
4

Jedyny raz, kiedy tego doświadczyłem, miał miejsce, gdy framework MVC nie był zainstalowany na serwerze. Czy to możliwe?

Uszkodzona może być również brakująca sekcja Pages w Views \ Web.config.

Daniel Elliott
źródło
Nie jestem pewien, jest to serwer hostowany i według nich ASP .NET MVC działa dobrze.
Riaan Engelbrecht
Znalazłem inną osobę (z wujem Google), która doświadczyła podobnego błędu z innego powodu. Dodano link do odpowiedzi. Powodzenia!
Daniel Elliott,
3

Miałem ten sam błąd i żadne z twoich rozwiązań nie pomogło. Myślę, że moim problemem była po prostu nazwa, którą wybrałem dla projektu. Nazwałam swój projekt „interfejsem”, który po otrzymaniu błędu analizy informował, że nie można go załadować:

Wiersz 1: <% @ Application Codebehind = "Global.asax.cs" Inherits = " @interface .MvcApplication" Language = "C #"%>

Gdzie z jakiegoś powodu był znak „@”. Domyślam się, że słowo „interfejs” jest zarezerwowane dla czegoś innego i dodało symbol @, ale to oczywiście coś zepsuło. Usunąłem projekt i bez problemu stworzyłem nowy z inną nazwą.

Matt
źródło
3

Oto kolejny:

  1. Pracowałem nad projektem interfejsu API sieci Web, który korzystał z localhost: 12345.
  2. Wyrejestrowałem inną gałąź z kontroli źródła zawierającą ten sam projekt.
  3. Uruchomiłem projekt na gałęzi i otrzymałem błąd.
  4. Poszedłem do „Właściwości> Sieć> Adres URL projektu” i kliknąłem „Utwórz katalog wirtualny”
  5. Pojawiło się okno dialogowe z informacją, że adres URL został zmapowany do innego katalogu (katalogu oryginalnego projektu).
  6. Kliknąłem OK i katalog wirtualny został ponownie zmapowany.
  7. Błąd zniknął.

Mam nadzieję, że to gdzieś komuś pomoże :)

grahamesd
źródło
to faktycznie zrobiło to dla mnie!
ra170
2

Miałem wiele problemów i błędów do rozwiązania, niektóre z powyższych odpowiedzi pomogły, ale ostatnia sztuczka, która sprawiła, że ​​to zadziałało, to: Idź do swojego projektu, kliknij właściwości.

Przejdź do zakładki Package / Publish Web i upewnij się, że konfiguracja jest ustawiona na Release, a Platform to All Platforms.

Na koniec upewnij się, że „Elementy do wdrożenia (dotyczy wszystkich metod wdrażania)” jest ustawione na „Wszystkie pliki w tym folderze projektu”

Wtedy zadziałało dobrze dla mnie.

Emiel Haeghebaert
źródło
2

Ten problem jest skomplikowany, ponieważ łatwo jest pomylić pierwotną przyczynę z bezpośrednią przyczyną.

W moim przypadku bezpośrednią przyczyną było to, że rozwiązanie jest skonfigurowane do korzystania z przywracania pakietu NuGet, ale serwer nie był połączony z Internetem, więc NuGet nie mógł pobrać zależności podczas tworzenia po raz pierwszy.

Uważam, że główną przyczyną jest po prostu to, że rozwiązanie nie jest w stanie poprawnie rozwiązać zależności. Może to być niepoprawna konfiguracja ścieżki, niewłaściwa wersja zestawu, sprzeczne zestawy lub częściowe wdrożenie. Ale we wszystkich przypadkach błąd polega po prostu na tym, że nie może znaleźć typu określonego w global.asax, ponieważ nie może go zbudować.

shovavnik
źródło
2

Upewnij się, że przestrzeń nazw w Global.asaxpliku jest zgodna z tym w Global.cspliku, tj

Global.asax: Some.Website.Webapplication

Global.cs: Some.Website(bez „WebApplication”)

TheDaveJay
źródło
2

Wypróbowałem większość powyższych odpowiedzi i nie zadziałały. Z jakiegoś powodu samo zamknięcie i ponowne otwarcie VS rozwiązało problem.

Rochelle C
źródło
2

Mój problem został rozwiązany po przekonwertowaniu w usługach IIS fizycznego folderu zawierającego pliki na aplikację. Kliknij prawym przyciskiem myszy> przekonwertuj do aplikacji.

jayt.dev
źródło
1

U mnie było to spowodowane tym, że tymczasowo wykluczyłem plik z projektu. Po prostu włączyłem to z powrotem do projektu, a potem zadziałało.

mstechnewbie
źródło
W moim też pliku rozwiązania zostało usuniętych kilka plików i nie zdawałem sobie z tego sprawy, dopóki nie zamknąłem i ponownie otworzyłem Visual Studio
Fiona - myaccessible.website
1

W moim przypadku brakowało odniesienia do System.Web.MVC w moim projekcie. Ale po dodaniu referencji problem był taki sam, więc sprawdziłem właściwości mojego folderu Bin, był to ReadOnly. Zaraz po umożliwieniu zapisu wszystko działa poprawnie.

yashpal
źródło
1

Wystąpił błąd, ponieważ wdrożyłem aplikację jako katalog wirtualny i otrzymywałem błąd parsera „nie można załadować typu”, po czym wdrożyłem aplikację jako witrynę internetową i nie otrzymałem tego błędu ponownie.

Riaz
źródło
0

Żadna z pozostałych odpowiedzi nie rozwiązała za mnie tego błędu.
Znalazłem rozwiązanie, które zadziałało, które proponuję osobom w podobnej sytuacji:

  1. Zamknij program Visual Studio
  2. Przejdź do Projects \ yourProject \ yourProject
  3. Zmień nazwę Web.Debug.config i Web.Release.config
  4. Przebuduj i uruchom aplikację
Charles Burns
źródło
Usunięto te ... i teraz nie pojawiają się ponownie.
FiringSquadWitness
0

Nigdy tak naprawdę nie dotarłem do sedna tego, co było dla mnie przyczyną. Myślę, że gdzieś musiałem brakować niektórych plików. Otrzymałem błąd po opublikowaniu na nowym serwerze. Ostatecznie skopiowałem witrynę z działającej witryny. Następnie strona działała, podobnie jak dalsze publikacje na nowym serwerze.

Giles Roberts
źródło
0

Wykonaj następujące kroki:

  1. Budować
  2. Manager konfiguracji
  3. Umieść projekt AnyCPU
  4. Wróć do generowania
  5. Gotowe, po tym po prostu wykonaj te same kroki, aby przekazać go do x86 lub x64
Ragdare
źródło
0

W moim przypadku miałem dołączoną bibliotekę DLL do mojego projektu, która musiała być uruchomiona w środowisku 32-bitowym.

Serwer został skonfigurowany do uruchamiania witryny w trybie 32-bitowym, ale nie mogłem uruchomić aplikacji na komputerze 64-bitowym, ponieważ localhostfolder nie został określony do działania w trybie 32-bitowym.

jp2code
źródło
0

Właśnie miałem podobny problem.

Powodem było to, że zmieniałem plik file.aspx.c i musiałem wykonać czystą odbudowę. Potem wszystko działało.

Fannar Örn Hermannsson
źródło
0

Mój problem polegał na tym, że próbowałem utworzyć aplikację internetową ASPX w podfolderze folderu, w którym był już plik web.config i

Więc otworzyłem folder nadrzędny w programie Visual Studio jako witrynę sieci Web (Otwórz> Witryna sieci Web). Mogłem dodać nową stronę ASPX elementu, która nie miała problemu z analizowaniem / ładowaniem.

jamespgilbert
źródło
0

U mnie problem dotyczył tylko niektórych (długich) linków w witrynie i został wyśledzony do narzędzia URLScan z domyślną konfiguracją limitu długości adresu URL wynoszącego 260.

James
źródło
0

Miałem ten sam problem. Spróbuj:

Kliknij projekt prawym przyciskiem myszy i wybierz opcję Wyczyść, a następnie kliknij ponownie prawym przyciskiem myszy i wybierz opcję Przebuduj i uruchom projekt, aby sprawdzić, czy zadziałał.

da Rocha Pires
źródło