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?
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:
Komm einfach rüber dieser Beitrag und das passierte mir.
Nur Clean
das Projekt und der Fehler geht weg. (muss ein VS2010-Fehler sein)
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.
Keiner. Sie müssen das Verzeichnis, in dem Sie die Website platziert haben, als Webanwendung in IIS einrichten.
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 :)
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
Convert to Application
Ok
WCF ist zurück und läuft.
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).
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
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.
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
<MvcBuildViews>false</MvcBuildViews>
In diesem Fall besteht eine Lösung darin, den Inhalt des Ordners obj in dem vom Compiler generierten Projekt zu löschen.
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.
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.config
s, die das Projekt enthält. Das web_project
weiß nicht, dass mein web_publish
sollte bei der Suche vermieden werden Web.config
s in den verschachtelten Unterverzeichnissen. Auf diese Weise kann der Web.config
s wurden dupliziert und der Fehler ist aufgetreten.
Die Lösung war, mein web_publish
irgendwo anders.
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.
Bereinigen Sie Ihr Projekt. Entfernen Sie den Ordner/obj.
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.
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.
Löschen Sie die Ordner bin und obj. Erstellen Sie dann die Lösung neu.
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 .
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
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.
Ich habe dieses Problem häufiger, wenn "true" in der Projektdatei aktiviert ist.
Wie Jonny sagt:
Ü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.
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.
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.
Ich habe zu meiner Website ein Veröffentlichungsskript hinzugefügt. Löschen Sie am Ende den Ordner obj aus Ihrem Website-Ordner.
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.
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.
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
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.
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.
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.
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!
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.
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.