Błąd: allowDefinition = 'MachineToApplication' poza poziom aplikacji


193

Pobrałem projekt online w ASP.Net. Podczas uruchamiania aplikacji pojawia się błąd

Błędem jest użycie sekcji zarejestrowanej jako allowDefinition = 'MachineToApplication' poza poziomem aplikacji. Ten błąd może być spowodowany brakiem konfiguracji katalogu wirtualnego jako aplikacji w IIS.

Jakie zmiany należy wprowadzić w pliku web.config lub w innym miejscu, aby to działało?


53
Żadna z odpowiedzi znalezionych w Internecie nie działała dla mnie. Mój problem został rozwiązany poprzez pokazanie wszystkich ukrytych plików / folderów i usunięcie objfolderu.
— The Muffin Man

6
Ten problem nadal objawia się w VS2012. Otworzyłem raport o błędach w firmie Microsoft. Każdy, kto ma problem, proszę zagłosować za raportem o błędzie connect.microsoft.com/VisualStudio/feedback/details/779737/…
— Eric J.

4
usunięcie folderu obj rozwiązało również ten problem. dzięki @Nick! (przepraszam za przebudzenie)
— Jordan Wayne Crabb


w moim przypadku dodatkowy problem web.config w podfolderze powoduje ten problem. Po usunięciu tego dodatkowego pliku web.config błąd zniknął
— Dio Phung

Odpowiedzi:


96

Właśnie spotkałem tę „rozkosz”. Wygląda na to, że pojawia się tuż po opublikowaniu aplikacji internetowej w trybie wydania.

Jedynym sposobem, aby konsekwentnie obejść problem, który znalazłem, jest przestrzeganie poniższej listy kontrolnej:

  1. Czyste rozwiązanie, gdy Twoje rozwiązanie jest skonfigurowane w trybie Release.
  2. Czyste rozwiązanie, gdy Twoje rozwiązanie jest skonfigurowane w trybie debugowania.
  3. Kompiluj, gdy Twoje rozwiązanie jest skonfigurowane w trybie debugowania.

18
Tylko odpowiedź, która dla mnie zadziałała. Czekało na mnie wiele innych błędów, ale nie były one powiązane. Dotarłem tutaj, ustawiając MvcBuildViewsna true.
— Benjamin

+1 BTW: Myślę, że powodem dla mnie było to, że najnowszą wersją, którą miałem, była debugowanie . Otworzyłem rozwiązanie, naprawiłem błąd i próbowałem zbudować w trybie R Release . Czyszczenie w wersji nie działało, ale czyszczenie w debugowaniu działało . (Prawdopodobnie potrzebna była kombinacja 2, tj. Wyczyść wszystkie stare referencje do bibliotek DLL, czy to Debug, czy Release ).
— Scotty.NET,

4
Zrobiłem czyszczenie , potem poszedłem do * właściwości projektu -> WWW -> Utwórz katalog wirtualny, a następnie problem został rozwiązany
— gldraphael

Czyste i odbudowane w trybie debugowania to wszystko, czego potrzebuję. Nie ma potrzeby przełączania się między wersją a debugowaniem. Ale tak, CZYSZCZENIE jest bardzo ważne. To sedno sprawy.
— markaaronky

1
Czyszczenie nie jest dostępne w moim przypadku, czego nigdy wcześniej nie widziałem. Jest to bardzo stara aplikacja VB.NET, którą odziedziczyłem od byłego kolegi.
— tnk479,

82

Właśnie natknąłem się na ten post i tak się ze mną działo.
Tylko Cleanprojekt i błąd znikają. (musi to być błąd VS2010)


to rozwiązanie, jeśli pojawi się to jako błąd w Visual Studio.
— gideon

22
Czasami czyszczenie nie usuwa objfolderu. Czasami to też wymaga usunięcia.
— jaypeagi

1
Nie działało ani czyszczenie, ani usuwanie obiektów. Rozwiązanie Johnny'ego Reilly'a zadziałało dla mnie.
— Benjamin

Musiałem pracować w trybie debugowania i zwalniania, aby się tego pozbyć. Uruchomienie go tylko w celu debugowania nie rozwiązało problemu.
— Juha Palomäki

Ten sam problem nadal występuje w VS2013SP1. Proste czyszczenie pozwala mi ponownie wdrożyć.
— Brian Knoblauch,

25

Właśnie miałem ten problem podczas tworzenia drugiej wersji mojej witryny. Nie stało się to, kiedy zbudowałem go po raz pierwszy.

Właśnie usunąłem foldery bin i obj, uruchomiłem Clean Solution i zbudowałem go ponownie, tym razem bez problemu.


2
To jedyne rozwiązanie, które działało dla mnie w VS Express 2012 for Web. Zacząłem też otrzymywać ten błąd dopiero po utworzeniu konfiguracji rozwiązania i dodaniu MvcBuildViews ustawionej na wartość true w jej grupie PropertyGroup w źródle .csproj.
— Jeremy Cook,

20

Żaden. Musisz skonfigurować katalog, w którym umieściłeś witrynę jako aplikację internetową w IIS .


1
Chociaż technicznie jest to zmiana „gdzie indziej, aby to zadziałało”;)
— Zhaph - Ben Duguid

2
i jest to rozwiązanie, jeśli pojawi się to jako błąd w Twojej aplikacji internetowej! = P
— gideon

Byłem już skonfigurowany jako aplikacja. Rozwiązanie Johnny'ego Reilly'ego zadziałało w moim przypadku.
— Benjamin

Właśnie próbuję uruchomić szablonową aplikację Webforms do pracy. Jest dobrze na localhost, ale nie na serwerze w sieci LAN. To rozwiązanie działało dla mnie: VS2015 CE, Windows Server 2008 w mojej sieci LAN. Skorzystałem z tej strony MS, aby wyjaśnić, co robić na IIS: support.microsoft.com/en-gb/kb/917413 . Brak zmian w kodzie szablonu.
— Tim

16

Ten błąd występuje podczas próby otwarcia projektu jako strony internetowej. Najłatwiejszym sposobem ustalenia, czy utworzyłeś stronę internetową czy projekt, jest sprawdzenie folderu rozwiązania (tj. Miejsca, w którym zapisałeś kod) i sprawdzenie, czy masz plik * .sln w katalogu głównym, jeśli tak, to „ stworzyliśmy projekt.

Żeby dodać, napotkałem ten błąd właśnie teraz, gdy próbowałem otworzyć projekt, który utworzyłem jakiś czas temu, wybierając „Plik”, „Otwórz stronę internetową” z menu Visual Studio, podczas gdy powinienem był wybrać „Plik”, „Otwórz projekt” zamiast. Zaraz po tym zdałem sobie sprawę :)


to też był mój problem
— mgrenier

13

W Visual Studio 2013 zmagałem się z tym przez jakiś czas i jest to dość łatwe do rozwiązania, wystarczy postępować zgodnie z tym, co mówią wyjątki: „katalog wirtualny nie jest konfigurowany jako aplikacja w IIS”

W moim przypadku WebServicezasadziłem IIS websitetak

  1. Otworzyłem stronę internetową w menedżerze IIS
  2. kliknij prawym przyciskiem myszy folder WCF
  3. kliknięty Convert to Application
  4. a następnie przesłane za pomocą Ok

WCF powraca.


1
Napotkałem ten problem, gdy przeniosłem aplikację na domyślną stronę internetową. Punkt 3 rozwiązał mój problem.
— bikram s.

To działało dla mnie, kiedy przeprowadziliśmy się do nowego serwera WWW. Po wykonaniu „Konwertuj na aplikację” symbol folderu zmienił się, a aplikacja web ASP.NET MVC zaczęła działać na tym serwerze WWW.
— Greg Barth

11

Błąd sugeruje, że używany kod oczekuje, że katalog wirtualny zostanie skonfigurowany w IIS.

Przejrzyj dokumentację i dodaj wymagany katalog wirtualny. Powinien to być katalog, który ma web.configw sobie (nie katalog główny).


8
Usunięcie drugiego pliku web.config z niższego katalogu rozwiązało problem.
— Lucas B

10
Jeden z moich chłopaków miał <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>w jego Web.configw Views, a następnie w folderze bagażnika, co spowodowało ten problem.
— Serj Sagan

10

Jeśli masz projekt MVC z włączoną kompilacją widoków, jednym z rozwiązań jest usunięcie folderu obj przed kompilacją. Dodaj do pliku projektu:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

Oto artykuł: Jak usunąć folder bin i / lub obj przed kompilacją lub wdrożeniem


8

Ostatnia zmiana pliku web.config może znajdować się w niewłaściwym pliku web.config.

<machineKey...>Nieruchomość została dodana do views / web.config . Bez względu na to, ile Cleans i Rebuilds błąd pozostał. Rozwiązaniem było przeniesienie właściwości do katalogu głównego /web.config .


Przypadkowo skopiowaliśmy nadrzędny plik Web.config do folderu / Views. Umieść tam oryginalną, znacznie mniejszą wersję folderu Widoki, a strona znów będzie działać.
— Grandizer

6

jeśli kiedykolwiek wystąpi ten błąd

Błędem jest użycie sekcji zarejestrowanej jako allowDefinition = 'MachineToApplication' poza poziomem aplikacji. Ten błąd może być spowodowany brakiem konfiguracji katalogu wirtualnego jako aplikacji w IIS

ROZWIĄZANIE
Miałem ten sam problem z VS 2012. Rozwiązałem to przez

  1. Zwolnij swój obecny projekt
  2. edytuj .csproj
  3. Znajdź to <MvcBuildViews>false</MvcBuildViews>
  4. Zamiast fałszu zmień wartość na true
  5. Załaduj ponownie swój projekt i nie powinieneś mieć więcej tego błędu

Jeśli tak, to jednym z rozwiązań jest usunięcie zawartości folderu obj w projekcie wygenerowanym przez kompilator.


18
To dziwne, ustawienie MvcBuildViewsw trueten sposób spowodowało błąd.
— Benjamin

Zacząłem również otrzymywać komunikat o błędzie po zmianie MvcBuildViews na true. Pozbyłem się komunikatu o błędzie, zmieniając wartość z powrotem na false.
— Juha Palomäki,

3
Zrobiłem „Czyste rozwiązanie” zarówno w trybie wydania, jak i debugowania, a teraz kompilacja działa również z<MvcBuildViews>true</MvcBuildViews>
— Juha Palomäki,

@ JuhaPalomäki super sweet! Dzięki.
— Haroon

Miałem dokładnie odwrotną sytuację niż @visar_uruqi. W moim pliku .csproj miałem opcję MvcBuildViews ustawioną na true, a gdy ustawiłem na false, błąd został pominięty (nie pokazano).
— Bronek

5

W moim przypadku problem pojawił się dopiero po opublikowaniu projektu w podkatalogu. Z powodu braku wiedzy umieściłem swój web_publishpodkatalog w web_projectkatalogu.

Oczywiste jest, że web_publishzawiera również te same, Web.configktóre zawiera projekt. Nie web_projectwiadomo jednak, że web_publishnależy unikać mojego wyszukiwania Web.configw zagnieżdżonych podkatalogach. W ten sposób Web.configs zostały zduplikowane i pojawił się błąd.

Rozwiązaniem było umieszczenie mojego web_publishgdzie indziej.


5

W moim przypadku był folder „Kopia zapasowa”, który zawierał tam kolejną kopię całej witryny. Oznaczało to kolejne, web.configwięc kompilacja zakończyła się niepowodzeniem z tym błędem. Usunąłem folder „Kopia zapasowa”, zrobiłem czyste rozwiązanie w kompilacjach Debug i Release, a błąd zniknął.


Miałem podobną sytuację, ktoś utworzył podfolder „Opublikowany” w katalogu głównym witryny na dysku (jest to stary projekt WWW, jeden z plików bez rozwiązania), i miał w nim plik Web.config. Błąd wystąpił, gdy program Visual Studio próbował go zbudować, i oczywiście żadna ilość czyszczenia / usuwania folderów „obj” itp. Nie naprawiła tego. Widziałem całkiem sporo przypadków tego błędu i prawie zawsze jest to gdzieś ukryty duplikat Web.config ... (naprawdę kiepski komunikat o błędzie!)
— Szczegół

4

W moim przypadku,

Rozwiązanie zawiera 6 projektów, 1 główny i 5 podkatalogów. wszystkie podkatalogi posiadające web.config.

Podczas uruchamiania dowolnej strony w podkatalogach pojawiał się ten sam błąd.

Usunąłem tę linię z web.config,

<authentication mode="Windows"/>

to działało dla mnie.


Jaką linię usunąłeś?
— Mark Berry

Linia była tam, ale chyba nie pojawiła się z powodu jakiegoś problemu z wcięciem. Zredagowałem i wkleiłem kod w bloku kodu, pokazuje teraz. Sprawdź i daj mi znać, czy mógłbym w czymś pomóc.
— p_champ

Dzięki, to potwierdza linię, w której również mnie nie działało. Mam tylko jedną stronę, więc obejrzałem ją, otwierając jako stronę internetową, a nie jako projekt.
— Mark Berry

4

Wyczyść projekt Usuń folder / obj (prawdopodobnie używasz publikowania i wdrażania? - jest w nim błąd)


Jedyne rozwiązanie, które działało dla mnie. Dostałeś się tutaj ustawiając <MvcBuildViews> true </MvcBuildViews>.
— Paul,

3

Mój problem polegał na tym, że przypadkowo opublikowałem moją usługę internetową w wstępnie ukończonej lokalizacji na nowej instalacji VS2010.

Opublikowałem w folderze o nazwie PreCompiledWeb i , że obecność pliku web.config pomieszała go.

Po prostu nukowałem folder i odświeżyłem projekt.

Po dwukrotnym kliknięciu tego błędu - zabrałem mnie do tego błędnego pliku web.config, który mnie wyrzucił.


2

Może to być problem z wersją, gdy pobierasz projekt .NET Framework 2.0 i chcesz go otworzyć w VS2008, wtedy będziesz musiał zaktualizować do najnowszej wersji, a VS utworzy kopię zapasową folderu w tym samym katalogu głównym. uzyskaj odpowiedź tutaj .


Odpowiedź ranganha tutaj zawiera więcej szczegółów.
— Mark Berry

2

Wystąpił ten błąd podczas budowania rozwiązania przy użyciu Web Deployment Project utworzonego w moim rozwiązaniu. Rozwiązuję błąd, usuwając folder, w którym zbudowany jest projekt Web Deployment Project. Ten folder jest określony w atrybucie „Folder projektu” właściwości WDP


2

Usuń foldery bin i obj. Następnie odbuduj rozwiązanie.


W Eksploratorze plików użyj zapytania „obj” kind: = folder i „bin” kind: = folder, aby znaleźć / usunąć te foldery. To zadziałało dla mnie.
— Robert J. Good

2

Najwyraźniej w moim rozwiązaniu były dwa pliki web.config. Korzystam z MVC4, w Widoku był inny plik konfiguracyjny i wprowadzałem zmiany w niewłaściwym pliku. Naprawione tam pomogło mi.

Ale zawsze możesz zmienić domyślne przekierowanie / trasę w pliku global.asax.


1

Prawdopodobnie masz folder projektu sub asp.net w folderze projektu, który nie jest skonfigurowany jako katalog wirtualny. Skonfiguruj projekt do uruchamiania w IIS.



1

Ten problem występuje częściej, jeśli w pliku projektu jest włączona opcja „prawda”.

  1. Ustaw false

Jak mówi Jonny:

  1. Czyste rozwiązanie, gdy Twoje rozwiązanie jest skonfigurowane w trybie Release.
  2. Czyste rozwiązanie, gdy Twoje rozwiązanie jest skonfigurowane w trybie debugowania.
  3. Kompiluj, gdy Twoje rozwiązanie jest skonfigurowane w trybie debugowania.

1

Miałem projekt, że nie chciałem być aplikacją internetową, chciałem, żeby to był folder. Odpowiedzią było całkowite usunięcie pliku web.config. Należy tylko do katalogu głównego aplikacji.


1

Jeśli napotkasz ten problem podczas publikowania witryny lub aplikacji na jakimś serwerze, prostym rozwiązaniem, którego użyłem, jest konwersja folderu zawierającego pliki do aplikacji internetowej.


4
Cześć, witamy w Stack Overflow! Czy możesz rozszerzyć swoją odpowiedź? Czy możesz wyjaśnić, jak przekonwertować folder na aplikację internetową? Pomoże to innym lepiej zrozumieć twoją odpowiedź.
— Jesse

1
W Menedżerze usług IIS w okienku Połączenia po prawej stronie kliknij prawym przyciskiem myszy katalog pod utworzonymi witrynami (lub domyślną witryną sieci Web) i wybierz Convert to Application.
— Aske B.

1

Ten sam problem mam w VS 2013 po opublikowaniu mojego projektu w trybie debugowania. Problem został rozwiązany przez usunięcie plików obj /


1

Mam projekt strony internetowej.

W moim przypadku przeniosłem plik rozwiązania na inną ścieżkę, co powoduje problem. Przywróciłem go do poprzedniej lokalizacji i problem zniknął.


1

Dla każdego, kto wciąż szuka, moim rozwiązaniem było usunięcie folderów bin i obj i ponowne uruchomienie Visual Studio wydaje się to naprawić.


1

Za pośrednictwem programu Visual Studio opublikowałem usługę WCF za pośrednictwem FTP na zewnętrznym serwerze. Działa dobrze lokalnie i podczas publikowania na serwerze wewnętrznym, ale nie na zewnętrznym. Rozwiązaniem było opublikowanie bez podania Site Path (innymi słowy, opublikuj bezpośrednio w katalogu głównym katalogu wirtualnego).

Nie jestem pewien, dlaczego to zadziałało, ponieważ próbowałem już przenieść pliki do katalogu głównego za pośrednictwem zewnętrznego klienta FTP - wśród wielu innych prób, w tym wszystkich wymienionych tutaj. Może to było coś z profilem publikacyjnym, tak jak dla FabianVal . Ale w tym momencie nie mam już ochoty na testowanie, ponieważ spieszy mi się, aby przyspieszyć po wszystkich dniach zmarnowanych na ten problem.


0

wskazówka 1: wyczyść, a następnie odbuduj.

wskazówka 2: po prostu zamknij VS i otwórz ponownie.

wskazówka 3: pobrany projekt może znajdować się w innym podfolderze ... otwórz folder zawierający pliki .net.

c: / demo1 / demo / (wszystkie pliki)

Powinieneś otworzyć demo z vs ... nie demo1.


0

Wypróbowałem wszystkie powyższe rozwiązania, ale żadne z nich nie działało na mój problem. (Jestem pewien, że istnieje 1000 rozwiązań tego problemu) W moim scenariuszu próbowałem opublikować moją usługę internetową WCF, którą testowałem w celu uruchomienia.

Nie zdałem sobie jednak sprawy, że w produkcji jesteśmy tylko HTTPS, co oznacza, że ​​przekierowujemy wszystko do HTTPS. Jak się okazało, wskazywałem na usługę przez HTTP zamiast HTTPS, co spowodowało błąd. Rozwiązaniem w tym scenariuszu była po prostu zmiana protokołu adresu na HTTPS zamiast HTTP.

Mam nadzieję, że pomoże to pewnej biednej duszy próbującej rozwiązać ten problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.