Fehler: allowDefinition = 'MachineToApplication' über die Anwendungsebene hinaus


193

Ich habe das Online-Projekt in ASP.Net heruntergeladen. Beim Ausführen der Anwendung wird eine Fehlermeldung angezeigt

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.

Welche Änderungen sollte ich in web.config oder anderswo vornehmen, damit dies funktioniert?


53
Keine der im Internet gefundenen Antworten hat bei mir funktioniert. Mein Problem wurde gelöst, indem alle versteckten Dateien / Ordner angezeigt und der objOrdner gelöscht wurden .
Der Muffin-Mann

6
Dieses Problem tritt immer noch in VS2012 auf. Ich habe einen Fehlerbericht mit Microsoft geöffnet. Wenn das Problem auftritt, stimmen
Eric J.

4
Das Löschen des obj-Ordners hat dieses Problem auch für mich behoben. danke @Nick! (Entschuldigung für die Wiederbelebung)
Jordan Wayne Crabb


In meinem Fall verursacht die zusätzliche web.config in einem Unterordner dieses Problem. Wenn ich diese zusätzliche web.config entferne, ist der Fehler weg
Dio Phung

Antworten:


96

Ich bin gerade auf diese "Freude" gestoßen. Es scheint sich zu präsentieren, kurz nachdem ich eine Webanwendung im Release-Modus veröffentlicht habe.

Die einzige Möglichkeit, das gefundene Problem konsequent zu umgehen, besteht darin, dieser Checkliste zu folgen:

  1. Saubere Lösung, während Ihre Lösung im Freigabemodus konfiguriert ist.
  2. Saubere Lösung, während Ihre Lösung im Debug-Modus konfiguriert ist.
  3. Erstellen Sie, während Ihre Lösung im Debug-Modus konfiguriert ist.

18
Nur Antwort, die auch bei mir funktioniert hat. Danach warteten viele andere Fehler auf mich, aber sie hatten nichts miteinander zu tun. Ich bin hierher gekommen, indem ich MvcBuildViewsauf eingestellt habe true.
Benjamin

+1 Übrigens: Ich denke, der Grund, warum dies für mich funktioniert hat, war, dass der letzte Build, den ich hatte, Debug war . Ich habe die Lösung geöffnet, eine Fehlerbehebung durchgeführt und versucht, im R- Release- Modus zu erstellen . Das Bereinigen in Release hat nicht funktioniert, das Bereinigen in Debug jedoch. (Wahrscheinlich war eine Kombination der 2 erforderlich, dh alle alten Verweise auf DLLs wurden gelöscht, egal ob Debug oder Release ).
Scotty.NET

4
Ich habe eine Bereinigung durchgeführt , bin dann zu * Projekteigenschaften -> Web -> Virtuelles Verzeichnis erstellen
gegangen

Ein Clean and Rebuild im Debug-Modus ist alles, was ich brauche. Sie müssen nicht zwischen Release und Debug hin und her wechseln. Aber ja, die REINIGUNG ist sehr wichtig. Das ist der Kern der Sache.
Markaaronky

1
Sauber ist in meinem Fall nicht verfügbar, was ich noch nie gesehen habe. Dies ist eine sehr alte VB.NET-Anwendung, die ich von einem ehemaligen Kollegen geerbt habe.
tnk479

82

Komm einfach auf diesen Beitrag und das passierte mir.
Nur Cleandas Projekt und der Fehler verschwinden. (muss ein VS2010-Fehler sein)


Diese Lösung, wenn Sie dies als Fehler in Visual Studio erhalten.
Gideon

22
Manchmal löscht clean den objOrdner nicht. Dies muss manchmal auch gelöscht werden.
Jaypeagi

1
Weder das Bereinigen noch das Löschen von Objekten hat funktioniert. Johnny Reillys Lösung hat bei mir funktioniert.
Benjamin

Ich musste sowohl im Debug- als auch im Release-Modus sauber laufen, um dies zu beseitigen. Das Ausführen nur für das Debuggen schien das Problem nicht zu lösen.
Juha Palomäki

Das gleiche Problem besteht immer noch in VS2013SP1. Mit einer einfachen Bereinigung kann ich erneut bereitstellen.
Brian Knoblauch

25

Ich hatte gerade dieses Problem beim Erstellen einer zweiten Version meiner Website. Es ist nicht passiert, als ich es das erste Mal gebaut habe.

Ich habe gerade die Ordner bin und obj gelöscht, eine saubere Lösung ausgeführt und sie erneut erstellt, diesmal ohne Probleme.


2
Dies ist die einzige Lösung, die in VS Express 2012 für Web für mich funktioniert hat. Außerdem wurde dieser Fehler erst angezeigt, nachdem ich eine Lösungskonfiguration erstellt und MvcBuildViews, die auf true festgelegt sind, zu seiner PropertyGroup in der .csproj-Quelle hinzugefügt habe.
Jeremy Cook

20

Keiner. Sie müssen das Verzeichnis, in dem Sie die Website platziert haben, als Webanwendung in IIS einrichten .


1
Obwohl technisch gesehen eine Änderung "anderswo, um diese Arbeit zu machen";)
Zhaph - Ben Duguid

2
und dies ist die Lösung, wenn Sie dies als Fehler in Ihrer Web-App erhalten! = P
Gideon

Ich wurde bereits als Anwendung eingerichtet. Johnny Reillys Lösung hat in meinem Fall funktioniert.
Benjamin

Ich versuche nur, die Vorlage Webforms App zum Laufen zu bringen. Es ist in Ordnung auf localhost, aber nicht auf einem Server im LAN. Diese Lösung hat bei mir funktioniert: VS2015 CE, Windows Server 2008 in meinem LAN. Auf dieser MS-Seite habe ich erklärt, was in IIS zu tun ist: support.microsoft.com/en-gb/kb/917413 . Keine Änderungen am Vorlagencode.
Tim

16

Dieser Fehler tritt auf, wenn Sie versuchen, ein Projekt als Website zu öffnen. Der einfachste Weg, um festzustellen, ob Sie eine Website oder ein Projekt erstellt haben, besteht darin, Ihren Lösungsordner (dh den Ort, an dem Sie Ihren Code gespeichert haben) zu überprüfen und festzustellen, ob sich eine * .sln-Datei im Stammverzeichnis befindet. Ich habe ein Projekt erstellt.

Nur um hinzuzufügen, ich bin gerade auf diesen Fehler gestoßen, als ich versuchte, ein Projekt zu öffnen, das ich vor einiger Zeit erstellt habe, indem ich "Datei", "Website öffnen" aus den Visual Studio-Menüs ausgewählt habe, während ich "Datei", "Projekt öffnen" hätte auswählen sollen. stattdessen. Ich wurde sofort angesprochen, als ich merkte :)


das war auch mein problem
mgrenier

13

In Visual Studio 2013 hatte ich eine Weile damit zu kämpfen und es ist ziemlich einfach zu lösen. Befolgen Sie einfach die Ausnahmen "Virtuelles Verzeichnis wird nicht als Anwendung in IIS konfiguriert".

In meinem Fall hatte ich so WebServicehineingepflanztIIS website

  1. Ich habe die Website im IIS-Manager geöffnet
  2. Rechtsklick auf den WCF-Ordner
  3. geklickt Convert to Application
  4. und dann eingereicht mit Ok

WCF ist zurück und läuft.


1
Dieses Problem trat auf, als ich meine Anwendung auf die Standardwebsite verschob. Punkt 3 hat es geschafft, mein Problem zu lösen.
Bikram s.

Dies hat bei mir funktioniert, als wir auf einen neuen Webserver umgezogen sind. Nach einer "In Anwendung konvertieren" wurde das Ordnersymbol geändert und die ASP.NET MVC-Webanwendung begann mit der Arbeit auf diesem Webserver.
Greg Barth

11

Der Fehler deutet darauf hin, dass der von Ihnen verwendete Code erwartet, dass ein virtuelles Verzeichnis auf IIS eingerichtet wird.

Schlagen Sie die Dokumentation nach und fügen Sie das erforderliche virtuelle Verzeichnis hinzu. Es sollte ein Verzeichnis sein, web.configin dem sich ein Verzeichnis befindet (nicht das Stammverzeichnis).


8
Das Entfernen einer zweiten web.config in einem niedrigeren Verzeichnis löste das Problem für mich.
Lucas B

10
Einer meiner Jungs hatte seine <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>in seinem Web.configin den Viewseher dann den Stamm - Ordnern, der dieses Problem verursacht.
Serj Sagan

10

Wenn Sie ein MVC-Projekt mit aktivierten Ansichten erstellen lassen, besteht eine der Lösungen darin, den Ordner obj vor dem Erstellen zu löschen. Zur Projektdatei hinzufügen:

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

Hier ist ein Artikel: So entfernen Sie den Ordner bin und / oder obj vor dem Erstellen oder Bereitstellen


8

Eine kürzlich vorgenommene Änderung von web.config befindet sich möglicherweise in der falschen Datei web.config.

Views / web.config wurde eine <machineKey...>Eigenschaft hinzugefügt . Egal wie viele Cleans und Rebuilds der Fehler blieb. Das Update bestand darin, die Eigenschaft in die root /web.config zu verschieben .


Wir hatten versehentlich die übergeordnete Web.config in den Ordner / Views kopiert. Legen Sie die ursprüngliche, viel kleinere Version für den Ordner "Ansichten" dort ab, und die Site funktionierte erneut.
Grandizer

6

wenn Sie jemals auf diesen Fehler stoßen

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

LÖSUNG
Ich hatte das gleiche Problem mit VS 2012. Ich habe dieses Problem durch gelöst

  1. Entladen Sie Ihr aktuelles Projekt
  2. Bearbeiten Sie Ihre .csproj
  3. Finde das <MvcBuildViews>false</MvcBuildViews>
  4. Anstelle von false ändern Sie den Wert in true
  5. Laden Sie Ihr Projekt erneut und Sie sollten diesen Fehler nicht mehr haben

Wenn Sie dies haben, besteht eine Lösung darin, den Inhalt des obj-Ordners in dem vom Compiler generierten Projekt zu löschen.


18
Das ist seltsam, wenn ich mich darauf einstelle MvcBuildViews, habe trueich den Fehler überhaupt erst bekommen.
Benjamin

Ich bekam auch die Fehlermeldung, nachdem ich MvcBuildViews in true geändert hatte. Ich habe die Fehlermeldung beseitigt, indem ich den Wert wieder auf false geändert habe.
Juha Palomäki

3
Ich habe eine "saubere Lösung" sowohl im Release- als auch im Debug-Modus erstellt und jetzt funktioniert der Build auch mit<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki

@ JuhaPalomäki super süß! Vielen Dank.
Haroon

Ich hatte genau die entgegengesetzte Situation zu der @visar_uruqi. Ich meine, in meiner .csproj- Datei hatte ich die Option MvcBuildViews auf true gesetzt und als ich auf false gesetzt habe, wurde der Fehler weggelassen (nicht gezeigt).
Bronek

5

In meinem Fall trat das Problem erst auf, nachdem ich das Projekt im Unterverzeichnis veröffentlicht hatte. Aufgrund meines Unwissens habe ich mein web_publishUnterverzeichnis in das web_projectVerzeichnis gestellt.

Es ist klar, dass das web_publishauch die gleichen Web.configs enthält, die das Projekt enthält. Das web_projectweiß jedoch nicht, dass my web_publishbei der Suche Web.configin den verschachtelten Unterverzeichnissen vermieden werden sollte . Auf diese Weise wurden die Web.configs dupliziert und der Fehler trat auf.

Die Lösung war, meine web_publishwoanders zu platzieren.


5

In meinem Fall gab es einen "Backup" -Ordner, der eine weitere Kopie der gesamten Website enthielt. Dies bedeutete eine andere web.configund so schlug der Build mit diesem Fehler fehl. Ich habe den Ordner "Backup" gelöscht, eine Clean-Lösung für die Debug- und Release-Builds durchgeführt und der Fehler ist verschwunden.


Ich hatte eine ähnliche Situation, jemand hatte einen "veröffentlichten" Unterordner im Website-Stammverzeichnis auf der Festplatte erstellt (dies ist ein altes Webprojekt, eines ohne Projektdatei), und es enthielt eine Web.config. Der Fehler trat auf, als Visual Studio versuchte, ihn zu erstellen, und natürlich wurde dies durch keine Anzahl von "obj" -Ordnern usw. behoben. Ich habe einige Fälle dieses Fehlers gesehen, und es ist fast immer eine doppelte Web.config, die sich irgendwo versteckt ... (auch wirklich schlechte Fehlermeldung!)
Detail

4

In meinem Fall,

Die Lösung enthält 6 Projekte, 1 Haupt- und 5 Unterverzeichnisse. Alle Unterverzeichnisse mit web.config.

Beim Ausführen einer Seite in Unterverzeichnissen wurde der gleiche Fehler angezeigt.

Ich habe diese Zeile aus web.config entfernt.

<authentication mode="Windows"/>

das hat bei mir funktioniert.


Welche Zeile haben Sie entfernt?
Mark Berry

Die Linie war da, wurde aber aufgrund eines Einrückungsproblems nicht angezeigt, denke ich. Ich habe den Code bearbeitet und in einen Codeblock eingefügt, der jetzt angezeigt wird. Bitte überprüfen Sie und lassen Sie mich wissen, ob ich in etwas helfen könnte.
p_champ

Danke, das bestätigt die Linie, dass es auch für mich fehlgeschlagen ist. Ich habe nur eine Site, also habe ich mich darum gekümmert, indem ich sie als Website und nicht als Projekt geöffnet habe.
Mark Berry

4

Bereinigen Sie Ihr Projekt. Entfernen Sie den Ordner / obj (wahrscheinlich mit Publish and Deployment? - Es liegt ein Fehler vor).


Einzige Lösung, die bei mir funktioniert hat. Sie sind hierher gekommen, indem Sie <MvcBuildViews> auf true </ MvcBuildViews> gesetzt haben.
Paul

3

Mein Problem war, dass ich versehentlich meinen Webservice an einem vorab abgeschlossenen Speicherort auf einer Neuinstallation von VS2010 veröffentlicht hatte.

Ich hatte in einem Ordner namens PreCompiledWeb veröffentlicht , und das Vorhandensein der web.config hat es vermutlich durcheinander gebracht.

Ich habe einfach den Ordner zerstört und das Projekt aktualisiert.

Wenn ich auf diesen Fehler doppelklicke, komme ich zu dieser fehlerhaften Datei web.config, die mich darauf hingewiesen hat.


2

Möglicherweise liegt ein Versionsproblem vor, wenn Sie das Projekt von .Net Framework 2.0 herunterladen und es in VS2008 öffnen möchten. Dann müssen Sie auf die neueste Version aktualisieren und VS erstellt die Sicherung des Ordners im selben Stammverzeichnis holen Sie sich die Antwort hier .


Ranganhs Antwort hier enthält einige weitere Details.
Mark Berry

2

Ich hatte diesen Fehler beim Erstellen der Lösung mit Web Deployment Project, das in meiner Lösung erstellt wurde. Ich behebe den Fehler, indem ich den Ordner lösche, in dem das Web Deployment Project erstellt wurde. Dieser Ordner wird im Attribut "Projektordner" der WDP-Eigenschaften angegeben


2

Löschen Sie die Ordner bin und obj. Erstellen Sie dann die Lösung neu.


Verwenden Sie für den Datei-Explorer die Suchabfrage "obj" kind: = Ordner und "bin" kind: = Ordner, um diese Ordner zu finden / löschen. Das hat bei mir funktioniert.
Robert J. Good

2

Anscheinend gab es zwei web.config-Dateien in meiner Lösung. Ich verwende MVC4 und es gab eine andere Konfigurationsdatei unter Ansichten und ich habe die Änderung in der falschen Datei vorgenommen. Behoben dort hat mir geholfen.

Sie können jedoch jederzeit die Standardumleitung / -route in der Datei global.asax ändern.


1

Wahrscheinlich haben Sie einen Projektordner unter asp.net im Projektordner, der nicht als virtuelles Verzeichnis konfiguriert ist. Richten Sie das Projekt für die Ausführung in IIS ein.



1

Ich habe dieses Problem häufiger, wenn "true" in der Projektdatei aktiviert ist.

  1. Setze false

Wie Jonny sagt:

  1. Saubere Lösung, während Ihre Lösung im Freigabemodus konfiguriert ist.
  2. Saubere Lösung, während Ihre Lösung im Debug-Modus konfiguriert ist.
  3. Erstellen Sie, während Ihre Lösung im Debug-Modus konfiguriert ist.

1

Ich hatte ein Projekt, bei dem ich keine Webanwendung sein wollte. Ich wollte, dass es ein Ordner ist. Die Antwort war, die Datei web.config vollständig zu löschen. Es gehört nur in das Stammverzeichnis einer Anwendung.


1

Wenn Sie beim Veröffentlichen Ihrer Website oder Anwendung auf einem Server auf dieses Problem stoßen, besteht die einfache Lösung darin, einen Ordner mit Dateien in eine Webanwendung zu konvertieren.


4
Hallo, willkommen bei Stack Overflow! Können Sie bitte Ihre Antwort erweitern? Können Sie erklären, wie der Ordner in eine Webanwendung konvertiert wird? Dies wird anderen helfen, Ihre Antwort besser zu verstehen.
Jesse

1
Klicken Sie im IIS-Manager rechts im Bereich "Verbindungen" mit der rechten Maustaste auf das Verzeichnis unter den von Ihnen erstellten Sites (oder der Standardwebsite) und wählen Sie Convert to Application.
Aske B.

1

Ich habe das gleiche Problem in VS 2013, nachdem ich mein Projekt im Debug-Modus veröffentlicht habe. Das Problem wurde durch Entfernen von obj / files gelöst


1

Ich habe ein Website-Projekt.

In meinem Fall hatte ich die Lösungsdatei auf einen anderen Pfad verschoben, was das Problem verursacht. Ich habe es am vorherigen Speicherort wiederhergestellt und das Problem ist behoben.


1

Für alle, die noch suchen, bestand meine Lösung darin, sowohl die Ordner bin als auch obj zu löschen und Visual Studio neu zu starten, um dies zu beheben.


1

Über Visual Studio hatte ich einen WCF-Dienst über FTP auf einem externen Server veröffentlicht. Es funktionierte lokal und beim Veröffentlichen auf einem internen Server, jedoch nicht auf dem externen Server. Die Lösung bestand darin , ohne Site Path Angabe eines zu veröffentlichen (dh direkt im Stammverzeichnis des virtuellen Verzeichnisses zu veröffentlichen).

Ich bin mir nicht sicher, warum es funktioniert hat, da ich bereits versucht hatte, die Dateien über einen externen FTP-Client in das Stammverzeichnis zu verschieben - neben vielen anderen Versuchen, einschließlich aller hier aufgeführten. Vielleicht war es etwas mit dem Veröffentlichungsprofil, wie es für FabianVal war . Aber ich bin zu diesem Zeitpunkt nicht mehr in der Stimmung zu testen, da ich es eilig habe, nach all den Tagen, die mit diesem Problem verschwendet wurden, auf dem Laufenden zu bleiben.


0

Tipp 1: Reinigen und dann wieder aufbauen.

Tipp 2: Schließen Sie einfach VS und öffnen Sie es erneut.

Tipp 3: Das heruntergeladene Projekt befindet sich möglicherweise in einem anderen Unterordner. Öffnen Sie den Ordner, in dem sich Ihre .net-Dateien befinden.

c: / demo1 / demo / (alle Dateien)

Sie sollten die Demo von vs ... nicht von demo1 öffnen müssen.


0

Ich habe jede der oben genannten Lösungen ausprobiert, aber keine davon hat für mein Problem funktioniert. (Ich bin sicher, es gibt 1000 Lösungen für dieses Problem.) In meinem Szenario habe ich versucht, meinen WCF-Webdienst, den ich im Test hatte, in der Produktion zu veröffentlichen.

Ich habe jedoch nicht erkannt, dass wir in der Produktion nur HTTPS sind, was bedeutet, dass wir alles zu HTTPS umleiten. Wie sich herausstellte, habe ich über HTTP anstelle von HTTPS auf den Dienst verwiesen, wodurch der Fehler verursacht wurde. Die Lösung in diesem Szenario bestand darin, das Adressprotokoll einfach in HTTPS anstatt in HTTP zu ändern.

Ich hoffe, das hilft einer armen Seele da draußen, dieses Problem herauszufinden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.