Es ist ein Fehler, einen Abschnitt zu verwenden, der über die Anwendungsebene hinaus als allowDefinition = 'MachineToApplication' registriert ist.
Die oberste Zeile auf allen meinen Aspx-Seiten in meinem Verzeichnis / portal / enthält diese Fehlermeldung, und ich weiß, dass sie häufig vorkommt. Ich habe diese Fehlermeldung ohne Ende gegoogelt und sehe viele Beiträge, in denen ich aufgefordert werde, den Ordner / portal / als Anwendung in IIS zu konfigurieren (die ich habe), und weitere Beiträge, in denen mir mitgeteilt wird, dass ich web.configs verschachtelt habe (aber Keines der Postings bietet eine Anleitung für eine Lösung.
Mein Setup ist, dass ich eine web.config in meinem Stammverzeichnis habe und dann versuche ich, ein Firmenportal im Verzeichnis / portal / zu erstellen. Das Verzeichnis / portal / hat eine eigene (notwendige) web.config.
Meine web.config-Zeile 50 sieht folgendermaßen aus:
<customErrors mode="Off" defaultRedirect="customerrorpage.aspx"/>
<anonymousIdentification enabled="true"/>
<authentication mode="Forms"/>
<membership defaultProvider="MyProvider">
Ich habe also domain.com/web.config UND domain.com/portal/web.config ... damit meine domain.com/portal/default.aspx-Seite nicht geladen wird.
Was ist die wirkliche Lösung dafür? Finde ich irgendwie eine Möglichkeit, meine root-Datei web.config mit meiner / portal / directory web.config zusammenzuführen, oder bin ich hier weit von der Basis entfernt?
Jede Anleitung wäre sehr dankbar!
quelle
Antworten:
Nur für Hintergrundinformationen; Konfigurationsinformationen für eine ASP.NET-Website werden in einer oder mehreren Web.config-Dateien definiert. Die Konfigurationseinstellungen werden hierarchisch angewendet. Es gibt eine "globale" Web.config-Datei, in der die Basiskonfigurationsinformationen für alle Websites auf dem Webserver aufgeführt sind. Diese Datei befindet sich im
%WINDIR%\Microsoft.Net\Framework\version\CONFIG
Ordner. Sie können auch eine Web.config-Datei im Stammordner Ihrer Website haben. Diese Web.config-Datei kann Einstellungen überschreiben, die in der "globalen" Web.config-Datei definiert sind, oder neue hinzufügen. Darüber hinaus befinden sich möglicherweise Web.config-Dateien in den Unterordnern Ihrer Website, die neue Konfigurationseinstellungen definieren oder Konfigurationseinstellungen überschreiben, die in Web.config-Dateien weiter oben in der Hierarchie definiert sind.Bestimmte Konfigurationselemente in Web.config können nicht über die Anwendungsebene hinaus definiert werden. Dies bedeutet, dass sie in der „globalen“ Datei Web.config oder in der Datei Web.config im Stammordner der Website definiert werden müssen. Das
<authentication>
Element ist ein solches Beispiel. Die obige Fehlermeldung zeigt an, dass sich in einem der Unterordner der Website eine Web.config-Datei befindet, die eines dieser Konfigurationselemente enthält, das nicht über die Anwendungsebene hinaus definiert werden kann.Quelle: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
Sie haben die 2 möglichen Ansätze korrekt identifiziert.
1 - Abhängig vom Inhalt Ihrer zweiten web.config und ob Ihr Setup dies zulässt (dh dieselbe Authentifizierungsmethode) - fügen Sie die
<authentication>
Einstellungen und alle anderen Elemente, die global definiert werden sollen, zur obersten web.config hinzu2 - Wenn Sie den Inhalt von web.config nicht zusammenführen können, sollten Sie in der Lage sein, den Unterordner in eine Webanwendung in IIS umzuwandeln, indem Sie die in diesem Link archivierten Link unten ausführen. Der ursprüngliche Link funktioniert nicht mehr. (siehe archiviert ) Hoffe das hilft.
quelle
Für das, was es wert ist, hatte ich den Fehler erhalten: "Es ist ein Fehler, einen Abschnitt zu verwenden, der als allowDefinition = 'MachineToApplication' über die Anwendungsebene hinaus registriert ist." und löste es schließlich, indem die Verzeichnisse \ myWebApp \ obj \ Debug und \ myWebApp \ obj \ Release gelöscht wurden. Ich musste auch eine Standard-Startseite festlegen. Aber dann startete die App einwandfrei. HTH.
quelle
Wie RY4N oben sagt, ist es nicht unbedingt die web.config in Ihrem Projektordner, die das Problem verursacht. In einigen Fällen habe ich festgestellt, dass beim Ausführen eines Builds unter dem Debug-Profil Detritus im Debug-Ordner unter dem betreffenden Projekt zurückbleibt. Hier befindet sich häufig eine web.config-Datei, die zu dem obigen Fehler führt, wenn Sie anschließend einen Build unter dem Release-Profil ausführen.
Die Lösung, die hier für mich funktioniert, besteht darin, den gesamten Debug-Ordner zu löschen, den die vorherigen Builds im Projektverzeichnis erstellt haben.
quelle
Es passierte auch auf meinem Heimcomputer, aber NUR, als ich Build Views für die Release-Konfiguration aktivierte UND eine Release-Konfiguration erstellte. Sonst ist es nicht passiert.
Obwohl die Option "Ansichten erstellen" sehr schön ist, habe ich sie deaktiviert, da dieser "Fehler" immer auftauchte und ich die App nicht ausführen konnte.
quelle
Nur um zu sagen
Wenn Sie ein Upgrade durchführen (z. B. 2008 -> 2010) Ein Projekt Visual Studio erstellt eine Sicherung (sofern Sie dies zulassen) in der Projektlösung, die der neuen Lösung hinzugefügt wird. In der alten Webkonfiguration kann der oben genannte Fehler dann auftreten .
" Die Datei " Web.config " in einem der Unterordner der Website enthält eines dieser Konfigurationselemente, das nicht über die Anwendungsebene hinaus definiert werden kann. " @Benni_mac_b
So beheben Sie das Problem: Entfernen Sie in diesem Szenario einfach den Sicherungsordner aus dem Projekt und der Lösung.
quelle
Ich habe mir einen anderen möglichen Grund dafür ausgedacht.
Ich hatte eine ältere Webanwendung in 2.0 gebaut. Ich habe es auf eine 4.5-Lösung migriert.
Die Anwendung wurde in Visual Studio erstellt und problemlos getestet. Als ich dann versuchte, die Webanwendung zu veröffentlichen, trat dieser Fehler immer wieder auf.
Schließlich stellte ich fest, dass das Problem darin bestand, dass Build Action für die Datei web.config "Embedded Resource" und nicht "Content" war. Außerdem wurde das Verzeichnis "In Ausgabeverzeichnis kopieren" auf "Immer kopieren" und nicht auf "Nicht kopieren" gesetzt. Ich weiß nicht, wann diese Einstellungen vorgenommen wurden, aber ich glaube, es war wieder in der 2.0-Version der Anwendung.
Durch Ändern der Einstellungen für die Datei web.config konnte die Aktion "Veröffentlichen" in Visual Studio 2012 veröffentlicht werden.
quelle
Ich hatte das gleiche Problem in einem MVC-Projekt. Der Fehler trat auf, als ich versuchte zu veröffentlichen. Es stellte sich heraus, dass der obj-Ordner leer sein sollte (oder zumindest keine enthalten sollte
web.config
).Laufen hat
Clean
mir nicht geholfen.Ich habe das Problem gelöst, indem ich den
obj
Ordner vor dem Erstellen bereinigt habe (das Erstellen des Projekts dauert in meinem Fall sowieso nicht so lange).Ich habe das Projekt entladen und dem BeforeBuild-Ziel Folgendes hinzugefügt
Hoffe das hilft
quelle
"Es ist ein Fehler, einen Abschnitt zu verwenden, der über die Anwendungsebene hinaus als allowDefinition = 'MachineToApplication' registriert ist. Dieser Fehler kann dadurch verursacht werden, dass ein virtuelles Verzeichnis in IIS nicht als Anwendung konfiguriert ist."
Ich hatte dieses Problem in VS.NET. Es stellte sich heraus, dass ich bei der Konfiguration einiger Konfigurationstransformationen fälschlicherweise die Eigenschaft "Immer kopieren" der Datei "Web.config" festgelegt hatte. Normalerweise setze ich meine Transformationsdateien auf "Immer kopieren", lasse aber die Stammdatei "web.config" als "Nicht kopieren".
Beachten Sie dies, da durch Ändern der Eigenschaften von web.config auch alle verschachtelten Transformationen geändert werden.
Also, um zu beheben:
1) Ändern Sie web.config in "Nicht kopieren".
2) Wenn Sie Konfigurationsumwandlungen verwenden, setzen Sie diese optional auf "Immer kopieren".
3) Löschen Sie die Ordner obj und bin aus der Lösung (diese sind möglicherweise nicht sichtbar. Wählen Sie daher den Projektknoten im Projektmappen-Explorer aus und klicken Sie auf die Symbolleistenschaltfläche "Alle Dateien anzeigen".
4) Veröffentlichen
Hat für mich gearbeitet.
quelle
Ich habe diesen Fehler nur beim Veröffentlichen der Anwendung festgestellt.
Die Eigenschaften der Dateien web.config (und transformations) wurden wie folgt festgelegt:
Build Action - None
Copy to Output - Always
.Die Lösung bestand darin, die Einstellungen zu ändern in:
Build Action - Content
Copy to Output - Do not Copy
quelle
Ich hatte auch dieses Problem und es trat auf, nachdem ich den Veröffentlichungsassistenten verwendet hatte, um meine Website im Web zu veröffentlichen.
Nachdem ich mich viel umgesehen hatte, stieß ich auf diesen Fehlerbericht auf der Connect-Website unter https://connect.microsoft.com/VisualStudio/feedback/details/779737/error-allowdefinition-machinetoapplication-beyond-application-level
Ein MS-Mitarbeiter antwortete und erklärte nicht nur, warum dies ein Problem war, das beim Veröffentlichen auftrat, sondern fügte auch eine vorübergehende Problemumgehung hinzu, die das Problem für mich behebte.
quelle
Löschen Sie das virtuelle Verzeichnis und erstellen Sie es erneut. Klicken Sie mit der rechten Maustaste und konvertieren Sie das virtuelle Verzeichnis in " Anwendung ".
quelle
Klicken Sie im
Web.config
Projektmappen-Explorer auf die Datei, klicken Sie mit der rechten Maustaste auf "Eigenschaften" und wechseln Sie zu "In Ausgabeverzeichnis kopieren: Nicht kopieren".quelle
Für mich war der Grund, dass sich der obj-Ordner unter dem Website-Ordner befand und mehrere web.config angezeigt wurden, nachdem verschiedene Konfigurationen erstellt wurden. Ich habe das Problem unter vs2012 gelöst, indem ich den Ordner obj von der Website entfernt habe. Zu diesem Zweck habe ich jeder Konfiguration in der Website-Projektdatei das Handbuch (im Editor) $ (SolutionDir) \ Obj \ $ (Konfiguration) hinzugefügt.
quelle
Ich hatte das gleiche Problem, als ich die Site veröffentlichte. Wenn ich die Site erstelle, bekomme ich keine Probleme, aber beim Veröffentlichen würde ich diesen schrecklichen Fehler bekommen:
Ich habe alles versucht, was hier in diesem Beitrag angegeben wurde, und es hat mir geholfen, einfach ein neues Veröffentlichungsprofil mit genau dem zu erstellen, das ich verwendet habe, und das funktioniert gut. Verstehen Sie den Fehler nicht mit dem neuen Profil aber mit dem alten machen. Ich bin mir nicht sicher, was der Unterschied ist, aber zumindest kann ich mein MVC-Projekt veröffentlichen.
Hoffe das hilft jemandem !!
quelle
Hier ist ein weiterer Grund: Wenn Sie Ihre gesamte Web-App in einen eigenen Unterordner kopieren, wird dieser Fehler angezeigt. Ich habe es geschafft, dies auf einer alten Site zu tun, als ich von einem Computer auf einen anderen kopiert habe. Ich wurde nur gebeten, mir die Site nach einer Pause von ungefähr 2 Jahren anzusehen, und der Fehler ist aufgetreten. Ich habe einiges herausgefunden, da ich keine mehreren Konfigurationsdateien hatte.
quelle
Ich hatte dieses Problem und löste es durch Reinigen meiner Lösung von alten Baugruppen usw.
von vs: Build> Clean Solution
dann neu erstellen.
quelle
Windows-Start -> Sites öffnen -> IIS -> Klicken Sie mit der rechten Maustaste auf Ihre Site -> Website verwalten -> Erweiterte Einstellungen -> Physischen Pfad durchsuchen -> versuchen Sie, den Unterordner des zu wählen, sobald Sie gerade ausgewählt sind.
Die Logik ist, dass die Webkonfigurationsdatei im Unterordner versucht, Änderungen vorzunehmen, und dies ist nicht zulässig. Dies muss der ausgewählte Ordner sein: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
quelle
Ich erhalte diesen Fehler auch, wenn ich versuche, eine Unterwebsite in der Website bereitzustellen.
Die Lösung ist:
<authentication mode="None" />
Wenn Sie ein anderes Problem haben, zögern Sie nicht, mich anzurufen. Vielleicht finde ich Hilfe.
quelle
Ich habe diesen Fehler auf localhost in Visual Studio 2017 erhalten, und ein einfacher Neustart von Visual Studio hat das Problem behoben.
Mir ist klar, dass dieses Problem auch durch mehr als eine web.config verursacht werden kann. eine in einem Unterordner zum Beispiel. Wenn Sie mehrere web.config-Dateien absichtlich für eine andere Anwendung haben: Stellen Sie sicher, dass das Verzeichnis nicht als virtuelles Verzeichnis angezeigt wird.
quelle
Stellen Sie sicher, dass Sie nicht in die Falle geraten, über localchost / mysite.test falsch auf Ihre lokale Site zuzugreifen. Dies sollte mysite.test sein, was Ihnen diesen Fehler gibt.
Wenn Sie wie localhost / dir_name auf Ihre Site zugreifen, fällt in diesem Fall Ihre web.conf unter die Stammebene und damit auf diesen Fehler.
quelle
Ich habe Apps migriert und die App enthielt mehrere Apps (mehrere web.configs). Ich ging in IIS, klickte mit der rechten Maustaste auf die Unterordner und dann auf "In Anwendung konvertieren" und es funktionierte.
quelle
Ich habe diesen Fehler anders als alle anderen bekommen:
Ich habe mit dem Webbereitstellungsprojekt von vs2010 auf vs2012 und ein neues Webveröffentlichungsprofil migriert.
Ich habe in vs2012 ein neues Web-Publish-Projekt erstellt, um es im Dateisystem zu veröffentlichen (wir haben einen separaten Installer-Builder, dies ist eine kommerzielle App), und ich habe in einem Ordner veröffentlicht, der sich innerhalb des vorhandenen Web-Projekts befindet und mit IIS verknüpft ist.
Dies verursachte den Fehler während der Veröffentlichung, der mich zuerst verwirrte, weil ich im Dateisystem veröffentlichte, nicht im IIS (dachte ich).
Die Lösung bestand darin, die Veröffentlichung in einen Ordner außerhalb des Webprojekts zu ändern.
quelle
Es war in Ordnung,
localhost
aber als ich eine Version auf dem Server veröffentlichte, startete ich den gleichen Fehler für einige Seiten. Dann habe ich die Lösung aufgeräumt und neu erstellt und veröffentlicht, die Dinge wurden behoben.quelle
Manchmal ist die einfache Antwort am besten. Ich hatte zwei web.config-Dateien in meinem Projekt. Auf der Hauptebene musste ich die Änderung vornehmen, um mein Sitzungszeitlimit zu beheben (was dieses Problem auslöste). Ich hatte eine separate Konfigurationsdatei in meinem Razor Views-Verzeichnis, die Einstellungen für Razor und seine Ansichten enthielt. Ich habe dort einen Abschnitt hinzugefügt (nicht auf Anwendungsebene!). Ohne zu bemerken, dass ich zwei separate web.config-Dateien hatte, habe ich alles versucht, außer nach dem Offensichtlichen zu suchen.
quelle
Mein Fehler war das versehentliche Kopieren und Einfügen einer web.config in einen anderen Ordner auf dem Webserver
quelle
Ich habe diesen Fehler erhalten, als ich vergessen habe, das veröffentlichte Projekt in eine Anwendung in IIS zu konvertieren.
quelle