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?

Deepali
quelle
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
LÖSUNG HIER: stackoverflow.com/questions/9300927/…
benni_mac_b
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.
John Reilly
quelle
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)

Eduardo Molteni
quelle
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.

xiecs
quelle
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 .


quelle
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 :)

Pete
quelle
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.

Marek
quelle
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).

Oded
quelle
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

Schamane
quelle
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 .

SushiGuy
quelle
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.

visar_uruqi
quelle
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.

pepr
quelle
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.

Druide
quelle
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.

p_champ
quelle
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).

NicoJuicy
quelle
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.

Gaijintendo
quelle
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 .

gofor.net
quelle
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

Ilya
quelle
2

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

Rovsen
quelle
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.

Gautam Beri
quelle
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.

funwithcoding
quelle
1

Ich habe meiner Website ein Veröffentlichungsskript hinzugefügt. Löschen Sie am Ende den Ordner obj aus Ihrem Website-Ordner.

Valamas
quelle
Sie könnten einen Einblick haben: stackoverflow.com/questions/6986738/…
ekkis
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.
Riccardo Bassilichi
quelle
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.

Rob Sedgwick
quelle
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.

ehabh86
quelle
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

Grigory Bushuev
quelle
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.

Daniel Silva
quelle
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.

Ricky G.
quelle
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.

Fragen Sie B.
quelle
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.

Lerner
quelle
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.

ROFLwTIME
quelle