webentwicklung-frage-antwort-db.com.de

Fehler: allowDefinition = 'MachineToApplication' außerhalb der Anwendungsebene

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

Es ist ein Fehler, einen als allowDefinition = 'MachineToApplication' registrierten Abschnitt über die Anwendungsebene hinaus zu verwenden. Dieser Fehler kann durch ein virtuelles Verzeichnis verursacht werden, das nicht als Anwendung in IIS konfiguriert ist.

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

191
Deepali

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

Die einzige Möglichkeit, das Problem, das ich gefunden habe, konsequent zu umgehen, besteht darin, der folgenden Checkliste zu folgen:

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

Komm einfach rüber dieser Beitrag und das passierte mir.
Nur Clean das Projekt und der Fehler geht weg. (muss ein VS2010-Fehler sein)

83
Eduardo Molteni

Ich hatte gerade dieses Problem, als ich eine zweite Version meiner Website erstellte. 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 erneut erstellt, diesmal ohne Probleme.

25
xiecs

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

20
Will

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 Speicherort Ihres Codes) zu überprüfen und festzustellen, ob sich im Stammverzeichnis eine * .sln-Datei befindet. habe ein projekt erstellt.

Nur zum Hinzufügen, ich bin auf diesen Fehler gestoßen, als ich versuchte, ein Projekt zu öffnen, das ich vor einiger Zeit durch Auswahl von "Datei", "Website öffnen" in den Visual Studio-Menüs erstellt habe, während ich "Datei", "Projekt öffnen" hätte auswählen sollen stattdessen. Sobald mir klar wurde, wurde ich mit den Gesichtern gepackt :)

16
Pete

In Visual Studio 2013 hatte ich eine Weile damit zu kämpfen und es ist ziemlich einfach zu lösen , einfach den Ausnahmen zu folgen "virtuelles Verzeichnis") wird in IIS nicht als Anwendung konfiguriert "

In meinem Fall hatte ich also WebService in IIS website Gepflanzt

  1. Ich habe die Website in 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.

12
Marek

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

Schlagen Sie in der Dokumentation nach und fügen Sie das erforderliche virtuelle Verzeichnis hinzu. Es sollte ein Verzeichnis sein, das ein web.config darin (nicht im Stammverzeichnis).

10
Oded

Wenn Sie ein MVC-Projekt mit aktivierter Ansichtenerstellung haben, besteht eine der Lösungen darin, den Ordner obj vor der Erstellung 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 Artikel: So entfernen Sie bin und/oder obj Ordner vor dem Build oder Deployment

10
Shaman

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

EIN <machineKey...> -Eigenschaft wurde zu Views/web.config hinzugefügt. Unabhängig davon, wie viele Bereinigungen und Neuerstellungen der Fehler bestehen blieb. Das Update bestand darin, die Eigenschaft in das Stammverzeichnis zu verschieben / web.config.

8
SushiGuy

wenn Sie jemals auf diesen Fehler stoßen

Es ist ein Fehler, einen als allowDefinition = 'MachineToApplication' registrierten Abschnitt über die Anwendungsebene hinaus zu verwenden. Dieser Fehler kann durch ein virtuelles Verzeichnis verursacht werden, das nicht als Anwendung in IIS konfiguriert ist

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

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

In diesem Fall besteht eine Lösung darin, den Inhalt des Ordners obj in dem vom Compiler generierten Projekt zu löschen.

6
visar_uruqi

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

5
Druid

In meinem Fall trat das Problem erst auf nachdem ich das Projekt veröffentlicht hatte im Unterverzeichnis. Wegen meines Unwissens habe ich mein web_publish Unterverzeichnis innerhalb des web_project Verzeichnis.

Es ist klar, dass die web_publish enthält auch das gleiche Web.configs, die das Projekt enthält. Das web_project weiß nicht, dass mein web_publish sollte bei der Suche vermieden werden Web.configs in den verschachtelten Unterverzeichnissen. Auf diese Weise kann der Web.configs wurden dupliziert und der Fehler ist aufgetreten.

Die Lösung war, mein web_publish irgendwo anders.

5
pepr

In meinem Fall,

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

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

Ich habe diese Zeile aus der Datei web.config entfernt.

<authentication mode="Windows"/>

das hat bei mir geklappt.

4
p_champ

Bereinigen Sie Ihr Projekt. Entfernen Sie den Ordner/obj.

3
NicoJuicy

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

Ich hatte in einem Ordner mit dem Namen PreCompiledWeb veröffentlicht, und das Vorhandensein der web.config, wie ich vermute, hat es durcheinander gebracht.

Ich habe den Ordner einfach überarbeitet und das Projekt aktualisiert.

Beim Doppelklicken auf diesen Fehler gelangte ich zu der fehlerhaften Datei web.config, die mich darauf aufmerksam machte.

3
gaijintendo

Anscheinend gab es zwei web.config-Dateien in meiner Lösung. Ich benutze MVC4 und es gab eine andere Konfigurationsdatei unter Ansichten und ich nahm die Änderung in der falschen Datei vor. Dort behoben hat mir geholfen.

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

2
Gautam Beri

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

2
rovsen

Möglicherweise liegt das Versionsproblem darin, dass Sie das Projekt von .Net Framework 2.0 herunterladen und es in VS2008 öffnen möchten. Anschließend müssen Sie auf die neueste Version aktualisieren und VS erstellt die Sicherung des Ordners im selben Stammverzeichnis bekomme die Antwort hier .

2
gofor.net

Ich hatte diesen Fehler, als ich die Lösung mit dem in meiner Lösung erstellten Web Deployment Project erstellte. 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
Ilya

Für alle, die noch auf der Suche sind, bestand meine Lösung darin, sowohl den bin- als auch den obj-Ordner zu löschen und Visual Studio neu zu starten.

1
Ricky G

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

  1. Falsch setzen

Wie Jonny sagt:

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

Über Visual Studio hatte ich einen WCF-Dienst über FTP veröffentlicht auf einem externen Server. Es funktionierte lokal einwandfrei und beim Veröffentlichen auf einem internen Server, aber nicht auf einem externen Server. Die Lösung bestand darin, zu veröffentlichen, ohne ein Site Path (mit anderen Worten, veröffentlichen Sie direkt im Stammverzeichnis des virtuellen Verzeichnisses).

Ich bin mir nicht sicher, warum es funktioniert, 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 den neuesten Stand zu kommen.

1
Aske B.

Möglicherweise befindet sich im Projektordner ein untergeordneter asp.net-Projektordner, der nicht als virtuelles Verzeichnis konfiguriert ist. Richten Sie das Projekt für die Ausführung in IIS ein.

1
funwithcoding

Wenn Sie dieses Problem beim Veröffentlichen Ihrer Website oder Anwendung auf einem Server haben, besteht die einfache Lösung darin, den Ordner, der Dateien enthält, in eine Webanwendung zu konvertieren.

1
ehabh86

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

1
Valamas

Ich hatte ein Projekt, das ich nicht als Webanwendung verwenden wollte, sondern als Ordner. Die Antwort war, die Datei web.config vollständig zu löschen. Es gehört nur in das Stammverzeichnis einer Anwendung.

1
Rob Sedgwick

Ich habe ein Website-Projekt.

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

1
Daniel Silva

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 behoben

1
Grigory Bushuev

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

Es ist mir jedoch nicht klar geworden, dass wir in der Produktion nur HTTPS verwenden, was bedeutet, dass wir alles an HTTPS umleiten. Wie sich herausstellt, habe ich auf den Dienst über HTTP anstatt über HTTPS verwiesen, wodurch der Fehler verursacht wurde. Die Lösung in diesem Szenario bestand darin, das Adressprotokoll einfach in HTTPS und nicht in HTTP zu ändern.

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

0
ROFLwTIME

In unserem Fall haben wir eine Site auf einem Server bereitgestellt, der auf anderen Servern repliziert wurde. Das Ausführen eines IISRESET auf allen Servern in der Bereitstellungsumgebung hat funktioniert.

0
user1477388

In meinem Fall habe ich mit GoDaddy gehostet, was nicht das Problem war, aber es hat ein wenig Verwirrung gestiftet.

Ich hatte einen Stammordner "WebServices" und stellte diesen als Anwendungsstamm ein.

Der Dienst befand sich jedoch in einem Unterordner namens "GeoLocateSpecials", da der Ordner "WebServices" ein Container für viele Dienste ist.

Daher musste ich GeoLocateSpecials als Anwendungsstamm festlegen, und von dort aus funktionierte es hervorragend.

Hoffe, das hilft allen anderen da draußen.

0
GPGVM

Nach dem Löschen der Crystal Reports-Sicherungsdateien aus dem Projektordner funktioniert es für mich.

Ich hatte das gleiche Problem beim Veröffentlichen der Website. Wenn ich die Website erstelle, erhalte ich keine Probleme, aber beim Veröffentlichen erhalte ich diesen schrecklichen Fehler:

"Es ist ein Fehler, einen als allowDefinition = 'MachineToApplication' registrierten Abschnitt über die Anwendungsebene hinaus zu verwenden. Dieser Fehler kann dadurch verursacht werden, dass ein virtuelles Verzeichnis in IIS nicht als Anwendung konfiguriert ist."

Ich habe alles versucht, was hier in diesem Beitrag angegeben wurde, aber es hat für mich nur funktioniert, ein neues Veröffentlichungsprofil zu erstellen, das genau dem entspricht, das ich verwendet habe, und das funktioniert, verstehe den Fehler nicht mit dem neuen profil aber mit dem alten machen. Ich bin mir nicht sicher, was der Unterschied ist, aber ich kann mein MVC-Projekt veröffentlichen.

Hoffe das hilft jemandem!

0
FabianVal

tipp 1: reinigen & dann neu aufbauen.

tipp 2: VS einfach schließen und wieder öffnen.

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

c:/demo1/demo/(alle Dateien)

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

0
Learner

Ich hatte das gleiche Problem, da für den übergeordneten Ordner automatisch eine neue globale Web.Config erstellt wird. Es war\Website\Website.

Nachdem ich alle Dateien aus dem untergeordneten Ordner in den übergeordneten Ordner verschoben und den untergeordneten Ordner gelöscht habe, habe ich nur eine Web.Config und das Problem ist behoben.

0
Auguste