Błędem jest użycie sekcji zarejestrowanej jako allowDefinition = 'MachineToApplication' poza poziomem aplikacji.
Górny wiersz na wszystkich moich stronach aspx w moim katalogu / portal / zawiera ten komunikat o błędzie i wiem, że jest to typowy komunikat. Pooglądałem ten komunikat o błędzie bez końca i widzę wiele postów mówiących mi, aby skonfigurować folder / portal / jako aplikację w IIS (które mam), i więcej postów mówiących, że zagnieździłem web.configs (ale żaden z postów nie zawiera wskazówek dotyczących rozwiązania).
Moja konfiguracja polega na tym, że mam plik web.config w katalogu głównym, a następnie próbuję utworzyć portal firmowy w katalogu / portal /. Katalog / portal / ma swój (konieczny) plik web.config.
Mój wiersz 50 web.config wygląda następująco:
<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms"/>
<membership defaultProvider="MyProvider">
Mam więc domenę.com/web.config ORAZ domenę.com/portal/web.config ... więc moja strona domena.com/portal/default.aspx nie zostanie załadowana.
Jakie jest na to prawdziwe rozwiązanie? Czy znajdę sposób na połączenie mojego katalogu głównego web.config z moim / portal / directory web.config, czy też jestem tutaj daleko od bazy?
Wszelkie wskazówki będą mile widziane!
źródło
Odpowiedzi:
Tylko dla informacji w tle; Informacje o konfiguracji witryny sieci Web ASP.NET są zdefiniowane w co najmniej jednym pliku Web.config. Ustawienia konfiguracji są stosowane w sposób hierarchiczny. Istnieje „globalny” plik Web.config, który określa podstawowe informacje o konfiguracji dla wszystkich stron internetowych na serwerze WWW; ten plik mieszka w
%WINDIR%\Microsoft.Net\Framework\version\CONFIG
folderze. Możesz także mieć plik Web.config w folderze głównym swojej witryny. Ten plik Web.config może zastąpić ustawienia zdefiniowane w „globalnym” pliku Web.config lub dodać nowe. Ponadto w podfolderach witryny mogą znajdować się pliki Web.config, które definiują nowe ustawienia konfiguracji lub zastępują ustawienia konfiguracji zdefiniowane w plikach Web.config znajdujących się wyżej w hierarchii.Niektórych elementów konfiguracyjnych w Web.config nie można zdefiniować poza poziomem aplikacji, co oznacza, że muszą być zdefiniowane w „globalnym” pliku Web.config lub w pliku Web.config w folderze głównym witryny.
<authentication>
Elementów jest jednym z przykładów. Powyższy komunikat o błędzie wskazuje, że w jednym z podfolderów serwisu znajduje się plik Web.config, który zawiera jeden z tych elementów konfiguracji, których nie można zdefiniować poza poziomem aplikacji.Źródło: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
Prawidłowo zidentyfikowałeś 2 możliwe podejścia.
1 - W zależności od zawartości drugiego pliku web.config i jeśli Twoja konfiguracja pozwoli (tj. Ta sama metoda uwierzytelniania) - dodaj
<authentication>
ustawienia i wszelkie inne elementy, które powinny być zdefiniowane globalnie, w górnym pliku web.config2 - Jeśli nie możesz scalić zawartości web.config, powinieneś być w stanie przekształcić podfolder w aplikację internetową w IIS, wykonując kroki zawarte w linku zarchiwizowanym poniżej. Oryginalny link już nie działa. (patrz zarchiwizowane ) Mam nadzieję, że to pomaga.
źródło
Za to, co jest tego warte, otrzymałem błąd: „Błędem jest użycie sekcji zarejestrowanej jako allowDefinition = 'MachineToApplication' poza poziomem aplikacji.” i ostatecznie rozwiązało to przez wyczyszczenie katalogów \ myWebApp \ obj \ Debug i \ myWebApp \ obj \ Release. Musiałem także ustawić domyślną stronę startową. Ale potem aplikacja zaczęła działać poprawnie. HTH.
źródło
Jak mówi RY4N powyżej, problem niekoniecznie musi być web.config w folderze Project. W niektórych przypadkach stwierdziłem, że uruchomienie kompilacji w profilu Debugowania pozostawi po sobie detrytus w folderze Debug w danym projekcie. Często znajduje się tutaj plik web.config, który prowadzi do błędu powyżej, gdy następnie uruchamiasz kompilację w profilu Release.
Rozwiązaniem, które tu działa, jest usunięcie całego folderu debugowania utworzonego przez poprzednią kompilację w katalogu projektu.
źródło
Działo się to również na moim komputerze domowym, ale TYLKO, kiedy włączyłem opcję Kompiluj widoki w konfiguracji wersji ORAZ zbudowałem konfigurację wersji. W przeciwnym razie tak się nie stanie.
Chociaż opcja Kompiluj widoki jest bardzo przyjemna, ostatecznie ją wyłączyłem, ponieważ ten „błąd” zawsze się pojawiał i uniemożliwiał mi uruchomienie aplikacji.
źródło
Po prostu powiedzieć
Jeśli uaktualnisz (np. 2008 -> 2010) projekt Visual Studio utworzy kopię zapasową (jeśli pozwolisz) w rozwiązaniu projektu dodanym do nowego rozwiązania, w starym Webconfig możesz wskazać błąd wskazany powyżej .
„ Plik Web.config w jednym z podfolderów witryny zawiera jeden z tych elementów konfiguracji, których nie można zdefiniować poza poziomem aplikacji. ” @Benni_mac_b
Aby to naprawić: w tym scenariuszu wystarczy usunąć folder kopii zapasowej z projektu i rozwiązania.
źródło
Wymyśliłem inny możliwy powód, dla którego tak się dzieje.
Miałem starszą aplikację internetową wbudowaną w 2.0. Przeprowadziłem migrację do rozwiązania 4.5.
Aplikacja została poprawnie zbudowana i debugowana w programie Visual Studio, ale gdy próbowałem opublikować aplikację internetową, ten błąd występował wielokrotnie.
W końcu odkryłem, że problemem jest to, że kompilacja działania dla pliku web.config to „Zasób osadzony” zamiast „Treść”. Ponadto dla opcji Kopiuj do katalogu wyjściowego ustawiono opcję „Zawsze kopiuj” zamiast „Nie kopiuj”. Nie wiem, kiedy te ustawienia zostały wprowadzone, ale sądzę, że wrócił do wersji 2.0 aplikacji.
Zmodyfikowanie ustawień pliku web.config pozwoliło na bezproblemowe działanie Publikuj w publikacji Visual Studio 2012.
źródło
Miałem ten sam problem w projekcie MVC. Błąd wystąpił, gdy próbowałem opublikować. Okazało się, że folder obj powinien być pusty (a przynajmniej nie zawierać żadnych
web.config
).Bieganie
Clean
mi nie pomogło.Rozwiązałem problem, czyszcząc
obj
folder przed każdą kompilacją (w moim przypadku i tak budowa projektu nie potrwa tak długo).Rozładowałem projekt i dodałem następujące elementy do obiektu BeforeBuild Target
Mam nadzieję że to pomoże
źródło
„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.”
Miałem ten problem w VS.NET. Okazało się, że kiedy konfigurowałem niektóre transformacje konfiguracji, przez pomyłkę ustawiłem właściwość pliku Web.config „Kopiuj zawsze”. Zwykle ustawiam pliki transformacji na „Zawsze kopiuj”, ale zostawiam plik główny web.config jako „Nie kopiuj”.
Uważaj, ponieważ zmiana właściwości pliku web.config zmienia również wszystkie zagnieżdżone transformacje.
Aby naprawić:
1) Zmień web.config na „Nie kopiuj”
2) Opcjonalnie, jeśli używasz transformacji konfiguracji, ustaw je na „Zawsze kopiuj”
3) Usuń foldery obj i bin z rozwiązania (mogą być niewidoczne, więc wybierz węzeł projektu w Eksploratorze rozwiązań i kliknij przycisk paska narzędzi „Pokaż wszystkie pliki”.
4) Opublikuj
Pracował dla mnie.
źródło
Ten błąd wystąpił tylko podczas publikowania aplikacji.
Właściwości plików web.config (i transformacji) zostały ustawione jako:
Build Action - None
Copy to Output - Always
.Rozwiązaniem była zmiana ustawień na:
Build Action - Content
Copy to Output - Do not Copy
źródło
Miałem również ten problem, który pojawił się po tym, jak użyłem Kreatora publikacji do opublikowania mojej witryny w Internecie.
Po wielu kopaniach natknąłem się na ten raport o błędach na stronie Connect, https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level
Odpowiedzi MS odpowiedziały, a także wyjaśniając, dlaczego był to problem, który pojawił się podczas publikowania, zawiera również tymczasowe obejście, które rozwiązało problem dla mnie.
źródło
Usuń i ponownie utwórz katalog wirtualny. Kliknij prawym przyciskiem myszy i przekonwertuj katalog wirtualny do „ aplikacji ”
źródło
Kliknij
Web.config
plik w Eksploratorze rozwiązań i kliknij prawym przyciskiem myszy „Właściwości” i zmień na „Kopiuj do katalogu wyjściowego: Nie kopiuj”.źródło
Dla mnie powodem było to, że folder obj znajdował się pod folderem strony internetowej, a po zbudowaniu różnych konfiguracji pojawiło się wiele plików web.config. Rozwiązałem problem w wersji vs2012, przenosząc folder obj na stronę internetową. Aby to zrobić, dodałem ręcznie (w notatniku) $ (SolutionDir) \ Obj \ $ (Konfiguracja) do każdej konfiguracji w pliku projektu strony internetowej.
źródło
Miałem ten sam problem, kiedy publikowałem witrynę, jeśli ją utworzę, nie mam problemów, ale podczas publikowania pojawia się ten okropny błąd:
Próbowałem wszystkiego, co zostało tu powiedziane w tym poście, nie ma ucieczki, to, co działało dla mnie, to po prostu utworzyć nowy profil publikowania z dokładnie takim samym, jak ten, którego używam i który działa dobrze, nie otrzymuj błędu z nowym profilem, ale ze starym. Nie jestem pewien, jaka jest różnica, ale przynajmniej mogę opublikować mój projekt MVC.
Mam nadzieję, że to komuś pomoże !!
źródło
Oto kolejny powód - jeśli skopiujesz całą aplikację internetową do jednego z własnych podfolderów, pojawi się ten błąd. Udało mi się to zrobić na starej stronie podczas kopiowania z jednej maszyny na drugą - zostałem poproszony o obejrzenie witryny po około 2 latach i wystąpił błąd. Trochę się zastanowiłem - ponieważ nie miałem wielu plików konfiguracyjnych.
źródło
Miałem ten problem i rozwiązałem go, czyszcząc moje rozwiązanie starych zespołów itp.
od vs: Kompilacja> Czyste rozwiązanie
następnie Odbuduj.
źródło
System Windows start -> otwórz Witryny -> IIS -> kliknij prawym przyciskiem myszy swoją witrynę -> Zarządzaj witryną -> Ustawienia zaawansowane -> przeglądaj Ścieżkę fizyczną -> spróbuj wybrać podfolder aktualnie wybranego miejsca.
logika jest taka, że plik konfiguracyjny sieci Web w podfolderze próbuje wprowadzić zmiany, co nie jest dozwolone, musi to być wybrany folder: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
źródło
Ten błąd pojawia się również, gdy próbuję wdrożyć podstronę w witrynie.
Rozwiązaniem jest:
<authentication mode="None" />
JEŚLI dostanę inny problem, nie wahaj się pingować, może znajdę pomoc.
źródło
Otrzymałem ten błąd na localhost w Visual Studio 2017, a proste ponowne uruchomienie Visual Studio rozwiązało problem.
Zdaję sobie sprawę, że ten problem może być również spowodowany posiadaniem więcej niż jednego pliku web.config; na przykład jeden w podfolderze. jeśli masz wiele plików web.config celowo dla innej aplikacji: upewnij się, że katalog nie jest postrzegany jako katalog wirtualny.
źródło
Upewnij się, że nie wpadniesz w pułapkę niewłaściwego dostępu do strony lokalnej za pośrednictwem localchost / mysite.test, który powinien być mysite.test, który da ci ten błąd.
Gdy uzyskujesz dostęp do swojej witryny, takiej jak localhost / nazwa_katalogu, w tym przypadku twoja strona web.conf spada poniżej poziomu roota i stąd ten błąd.
źródło
Migrowałem aplikacje, a aplikacja zawierała wiele aplikacji (wiele web.configs). To, co zrobiłem, to przejście do IIS, następnie kliknięcie podfolderów prawym przyciskiem myszy, a następnie „Konwertuj na aplikację” i zadziałało.
źródło
Wystąpił ten błąd inaczej niż wszyscy inni:
Migrowałem z vs2010 z projektem wdrożenia internetowego do vs2012 i nowego profilu publikowania w Internecie.
W vs2012 utworzyłem nowy projekt publikowania w Internecie, aby publikować w systemie plików (mamy osobnego konstruktora instalatora, jest to aplikacja komercyjna) i publikowałem w folderze, który był w istniejącym projekcie internetowym połączonym z IIS.
Spowodowało to błąd podczas publikowania, który początkowo mnie zaskoczył, ponieważ publikowałem w systemie plików, a nie w IIS (myślałem).
Rozwiązaniem była zmiana publikowania w folderze na poza projekt WWW.
źródło
Było dobrze,
localhost
ale kiedy opublikowałem wydanie na serwerze, zacząłem ten sam błąd na kilku stronach. Potem wyczyściłem rozwiązanie, przebudowałem i opublikowałem, wszystko się poprawiło.źródło
Czasami najlepsza jest prosta odpowiedź. W moim projekcie miałem dwa pliki web.config. Ten na poziomie głównym wymagał zmiany, aby uporać się z przekroczeniem limitu czasu sesji (co spowodowało ten problem). Miałem osobny plik konfiguracyjny w katalogu Razor Views, który zawierał ustawienia Razor i jego widoków. Dodałem tam sekcję (nie na poziomie aplikacji!). Nie zdając sobie sprawy, że mam dwa osobne pliki web.config, próbowałem wszystkiego oprócz szukania rzeczy oczywistych.
źródło
moim błędem było przypadkowe skopiowanie wklejenia pliku web.config do innego folderu na serwerze WWW
źródło
Wystąpił ten błąd, gdy zapomniałem przekonwertować opublikowany projekt na aplikację w IIS.
źródło