Freigeben über


ASP.NET Webbereitstellung mit Visual Studio: Problembehandlung

Von Tom Dykstra

Startprojekt herunterladen

In dieser Lernprogrammreihe wird gezeigt, wie Sie eine ASP.NET Webanwendung mit Azure App Service Web Apps oder einem Drittanbieter mit Visual Studio 2012 oder Visual Studio 2010 bereitstellen (veröffentlichen). Informationen zur Reihe finden Sie im ersten Lernprogramm in der Reihe.

Diese Seite beschreibt einige häufige Probleme, die auftreten können, wenn Sie eine ASP.NET Webanwendung mithilfe von Visual Studio bereitstellen. Für jeden werden eine oder mehrere mögliche Ursachen und entsprechende Lösungen bereitgestellt.

Die gezeigten Szenarien gelten sowohl für Azure- als auch für Hostinganbieter von Drittanbietern. Weitere Informationen zur Problembehandlung von Web-Apps in Azure App Service finden Sie in den folgenden Ressourcen:

Serverfehler in der Anwendung "/" – Aktuelle benutzerdefinierte Fehlereinstellungen verhindern, dass Details des Fehlers remote angezeigt werden

Szenario

Nach der Bereitstellung einer Website auf einem Remotehost erhalten Sie eine Fehlermeldung, die die Einstellung customErrors in der Web.config Datei erwähnt, aber nicht angibt, was die tatsächliche Ursache des Fehlers war:

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom error settings 
for this application prevent the details of the application error from being viewed remotely 
(for security reasons). It could, however, be viewed by browsers running on the local server 
machine. 

Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".

Mögliche Ursache und Lösung

Standardmäßig werden in ASP.NET detaillierte Fehlerinformationen nur angezeigt, wenn Ihre Webanwendung auf dem lokalen Computer ausgeführt wird. Im Allgemeinen möchten Sie keine detaillierten Fehlerinformationen anzeigen, wenn Ihre Webanwendung über das Internet öffentlich verfügbar ist, da Hacker diese Informationen möglicherweise verwenden können, um Sicherheitsrisiken in der Anwendung zu finden. Wenn Sie jedoch eine Website oder Aktualisierungen auf einer Website bereitstellen, tritt manchmal ein Fehler auf, und Sie müssen die eigentliche Fehlermeldung erhalten.

Damit die Anwendung detaillierte Fehlermeldungen anzeigt, wenn sie auf dem Remotehost ausgeführt wird, bearbeiten Sie die Web.config Datei, um den modus "customErrors" zu deaktivieren, die Anwendung erneut bereitzustellen und die Anwendung erneut auszuführen:

  1. Wenn die Anwendung Web.config Datei über ein customErrors-Element im System.web-Element verfügt, ändern Sie das Modus-Attribut in "off". Fügen Sie andernfalls ein customErrors-Element im System.web-Element hinzu, wobei das Modus-Attribut auf "off" festgelegt ist, wie im folgenden Beispiel gezeigt:

    <configuration>
      <system.web>
        <customErrors mode="off"/>
      </system.web>
    </configuration>
    
  2. Stellen Sie die Anwendung bereit.

  3. Führen Sie die Anwendung aus, und wiederholen Sie alles, was Sie zuvor getan haben, was dazu führte, dass der Fehler aufgetreten ist. Jetzt können Sie sehen, was die eigentliche Fehlermeldung ist.

  4. Wenn Sie den Fehler behoben haben, stellen Sie die ursprüngliche Einstellung "customErrors" wieder her und implementieren Sie die Anwendung erneut.

Die Datei "ContosoUniversity" kann nicht erstellt oder als Schattenkopie angelegt werden, wenn die Datei bereits vorhanden ist.

Szenario

Wenn Sie versuchen, ein Projekt in Visual Studio auszuführen, wird eine Fehlerseite mit einer Meldung wie dem folgenden Beispiel angezeigt:

Serverfehler in der Anwendung "/". Die Kopie "ContosoUniversity" kann nicht erstellt oder als Schattenkopie angelegt werden, wenn sie bereits existiert.

Mögliche Ursache und Lösung

Warten Sie eine Minute, und aktualisieren Sie den Browser, oder kompilieren Sie die Website erneut, und versuchen Sie es erneut.

Der Zugriff wird auf einer Webseite verweigert, die SQL Server Compact verwendet

Szenario

Wenn Sie eine Website bereitstellen, die SQL Server Compact verwendet, und Sie eine Seite auf der bereitgestellten Website ausführen, die auf die Datenbank zugreift, wird die folgende Fehlermeldung angezeigt:

Zugriff verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))

Mögliche Ursache und Lösung

Das NETWORK SERVICE-Konto auf dem Server muss sql Service Compact native Binärdateien lesen können, die sich im Ordner "bin\amd64 " oder "bin\x86 " befinden, aber keine Leseberechtigungen für diese Ordner besitzen. Legen Sie die Leseberechtigung für NETWORK SERVICE im Ordner "bin " fest, und stellen Sie sicher, dass Sie die Berechtigungen auf Unterordner erweitern.

Konfigurationsdatei kann aufgrund unzureichender Berechtigungen nicht gelesen werden

Szenario

Wenn Sie auf die Schaltfläche zum Veröffentlichen von Visual Studio klicken, um eine Anwendung auf Ihrem lokalen Computer in IIS bereitzustellen, schlägt die Veröffentlichung fehl, und das Ausgabefenster zeigt eine Fehlermeldung wie die folgende an:

Fehler beim Lesen der IIS-Konfigurationsdatei 'MACHINE/REDIRECTION'. Die Identität, die diesen Vorgang ausführt, war ... Fehler: Die Konfigurationsdatei kann aufgrund unzureichender Berechtigungen nicht gelesen werden.

Mögliche Ursache und Lösung

Um die Veröffentlichung mit einem Klick auf IIS auf Ihrem lokalen Computer zu verwenden, müssen Sie Visual Studio mit Administratorberechtigungen ausführen. Schließen Sie Visual Studio, und starten Sie es mit Administratorberechtigungen neu.

Die Verbindung zum Zielcomputer konnte nicht hergestellt werden ... unter Verwendung des angegebenen Prozesses

Szenario

Wenn Sie auf die Schaltfläche zum Veröffentlichen von Visual Studio klicken, um eine Anwendung bereitzustellen, schlägt die Veröffentlichung fehl, und das Ausgabefenster zeigt eine Fehlermeldung wie die folgende an:

Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server. 
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.

Mögliche Ursache und Lösung

Ein Proxyserver unterbricht die Kommunikation mit dem Zielserver. Wählen Sie in der Windows-Systemsteuerung oder in Internet Explorer Internetoptionen und dann die Registerkarte "Verbindungen " aus. Klicken Sie im Dialogfeld "Interneteigenschaften " auf "LAN-Einstellungen". Deaktivieren Sie im Dialogfeld Lan-Einstellungen (Local Area Network) das Kontrollkästchen "Einstellungen automatisch erkennen" . Klicken Sie dann erneut auf die Schaltfläche "Veröffentlichen".

Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren Systemadministrator, um zu ermitteln, was mit Proxy- oder Firewalleinstellungen geschehen kann. Das Problem tritt auf, da Web Deploy einen nicht standardmäßigen Port für die Bereitstellung des Webdiensts verwendet (8172); für andere Verbindungen verwendet Web Deploy Port 80. Wenn Sie ein Deployment bei einem Drittanbieter durchführen, verwenden Sie in der Regel den Web Management Service.

Standardmäßiger .NET 4.0-Anwendungspool ist nicht vorhanden.

Szenario

Wenn Sie eine Anwendung bereitstellen, die .NET Framework 4 erfordert, wird die folgende Fehlermeldung angezeigt:

Der .NET 4.0-Standardanwendungspool ist nicht vorhanden, oder die Anwendung konnte nicht hinzugefügt werden. Überprüfen Sie, ob ASP.NET 4.0 auf diesem Computer installiert ist.

Mögliche Ursache und Lösung

ASP.NET 4 ist in IIS nicht installiert. Wenn der Server, auf dem Sie bereitstellen, Ihr Entwicklungscomputer ist und Visual Studio 2010 darauf installiert ist, wird ASP.NET 4 auf dem Computer installiert, ist aber möglicherweise nicht in IIS installiert. Öffnen Sie auf dem Server, für den Sie bereitstellen, eine Eingabeaufforderung mit erhöhten Rechten, und installieren Sie ASP.NET 4 in IIS, indem Sie die folgenden Befehle ausführen:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

Möglicherweise müssen Sie auch manuell die .NET Framework-Version des Standardanwendungspools festlegen. Weitere Informationen finden Sie im Lernprogramm "Deploying to IIS as a Test Environment" in dieser Reihe.

Das Format der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 0.

Szenario

Nachdem Sie eine Anwendung mit einem Klick veröffentlichen bereitgestellt haben, wird beim Ausführen einer Seite, die auf die Datenbank zugreift, die folgende Fehlermeldung angezeigt:

Das Format der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 0.

Mögliche Ursache und Lösung

Öffnen Sie die Web.config Datei auf der bereitgestellten Website, und überprüfen Sie, ob die Verbindungszeichenfolgenwerte beginnen $(ReplaceableToken_, wie im folgenden Beispiel:

<connectionStrings>
  <add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
  <add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

Wenn die Verbindungszeichenfolgen wie in diesem Beispiel aussehen, bearbeiten Sie die Projektdatei, und fügen Sie dem PropertyGroup-Element die folgende Eigenschaft hinzu, die für alle Buildkonfigurationen gilt:

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

Stellen Sie die Anwendung dann erneut zur Anwendung.

HTTP 500 Interner Serverfehler

Szenario

Wenn Sie die bereitgestellte Website ausführen, wird die folgende Fehlermeldung ohne spezifische Informationen angezeigt, die die Ursache des Fehlers angeben:

HTTP-Fehler 500 – Interner Serverfehler.

Mögliche Ursache und Lösung

Es gibt viele Ursachen von 500 Fehlern, aber eine mögliche Ursache, wenn Sie diesen Lernprogrammen folgen, ist, dass Sie ein XML-Element an der falschen Stelle in einer der Web.config Transformationsdateien platzieren. Sie erhalten beispielsweise diesen Fehler, wenn Sie die Transformation einfügen, die ein <Ortselement> unter <system.web> einfügt, anstatt direkt unter <configuration>. Sie können das Feature Web.config Transformationsvorschau verwenden, um zu überprüfen, ob Transformationen wie vorgesehen funktionieren. Die Lösung, wenn Sie eine Transformation finden, die falsch codiert wurde, besteht darin, die Transformationsdatei zu korrigieren und erneut bereitzustellen. Wenn ein Fehler nicht offensichtlich ist, versuchen Sie, Transformationen auszukommentieren und erneut zu deployen, um festzustellen, welche Transformation den 500-Fehler verursacht.

HTTP 500.21 Interner Serverfehler

Szenario

Wenn Sie die bereitgestellte Website ausführen, wird die folgende Fehlermeldung angezeigt:

HTTP-Fehler 500.21 – Interner Serverfehler. Der Handler "PageHandlerFactory-Integrated" verfügt in der Modulliste über ein ungültiges Modul "ManagedPipelineHandler".

Mögliche Ursache und Lösung

Die von Ihnen bereitgestellte Website zielt auf ASP.NET 4 ab, aber ASP.NET 4 ist nicht in IIS auf dem Server registriert. Öffnen Sie auf dem Server eine Eingabeaufforderung mit erhöhten Rechten, und registrieren Sie ASP.NET 4, indem Sie die folgenden Befehle ausführen:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

Möglicherweise müssen Sie auch manuell die .NET Framework-Version des Standardanwendungspools festlegen. Weitere Informationen finden Sie im Lernprogramm "Deploying to IIS as a Test Environment" in dieser Reihe.

Fehler beim Anmelden: Öffnen der SQL Server Express-Datenbank in App_Data fehlgeschlagen

Szenario

Sie haben die Web.config Dateiverbindungszeichenfolge so aktualisiert, dass sie auf eine SQL Server Express-Datenbank als .mdf Datei in Ihrem App_Data Ordner verweist, und beim ersten Ausführen der Anwendung wird die folgende Fehlermeldung angezeigt:

System.Data.SqlClient.SqlException: Datenbank "DatabaseName" kann nicht geöffnet werden, die von der Anmeldung angefordert wurde. Fehler bei der Anmeldung.

Mögliche Ursache und Lösung

Der Name der .mdf-Datei kann nicht mit dem Namen einer SQL Server Express-Datenbank übereinstimmen, die jemals auf Ihrem Computer vorhanden ist, auch wenn Sie die .mdf Datei der zuvor vorhandenen Datenbank gelöscht haben. Ändern Sie den Namen der .mdf-Datei in einen Namen, der nie als Datenbankname verwendet wurde, und ändern Sie die Web.config Datei so, dass der neue Name verwendet wird. Alternativ können Sie SQL Server Management Studio Express verwenden, um zuvor vorhandene SQL Server Express-Datenbanken zu löschen.

Modellkompatibilität kann nicht überprüft werden

Szenario

Sie haben die Web.config Dateiverbindungszeichenfolge aktualisiert, um auf eine neue SQL Server Express-Datenbank zu verweisen, und beim ersten Ausführen der Anwendung wird die folgende Fehlermeldung angezeigt:

Die Modellkompatibilität kann nicht überprüft werden, da die Datenbank keine Modellmetadaten enthält. Stellen Sie sicher, dass IncludeMetadataConvention den DbModelBuilder-Konventionen hinzugefügt wurde.

Mögliche Ursache und Lösung

Wenn der Datenbankname, den Sie in die Web.config Datei einfügen, jemals zuvor auf Ihrem Computer verwendet wurde, ist möglicherweise bereits eine Datenbank mit einigen Tabellen darin vorhanden. Wählen Sie einen neuen Namen aus, der noch nicht auf Ihrem Computer verwendet wurde, und ändern Sie die Web.config Datei so, dass sie auf diesen neuen Datenbanknamen verweist. Alternativ können Sie sql Server Express Utility oder SQL Server Management Studio Express verwenden, um die vorhandene Datenbank zu löschen.

SQL-Fehler, wenn ein Skript versucht, Benutzer oder Rollen zu erstellen

Szenario

Sie verwenden die Datenbankbereitstellung, die auf der Registerkarte " Sql packen/veröffentlichen " konfiguriert ist, SQL-Skripts, die während der Bereitstellung ausgeführt werden, umfassen Befehle "Benutzer erstellen" oder "Rollen erstellen", und die Skriptausführung schlägt fehl, wenn diese Befehle ausgeführt werden. Möglicherweise werden detailliertere Nachrichten angezeigt, z. B. die folgenden:

The approximate location of the error was between lines '1' and '3' of the script. 
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.

Wenn dieser Fehler auftritt, weil Sie die Datenbankbereitstellung im Assistenten zum Veröffentlichen von Web anstelle der Registerkarte Package/Publish-SQL konfiguriert haben, erstellen Sie im Forum Konfiguration und Bereitstellung einen Thread. Die Lösung wird dieser Problembehandlungsseite hinzugefügt.

Mögliche Ursache und Lösung

Das Benutzerkonto, das Sie zum Ausführen der Bereitstellung verwenden, verfügt nicht über die Berechtigung zum Erstellen von Benutzern oder Rollen. Beispielsweise kann das Hostingunternehmen dem Benutzerkonto, das es für Sie eingerichtet hat, die db_datareader, db_datawriter und db_ddladmin Rollen zuweisen. Diese sind ausreichend, um die meisten Datenbankobjekte zu erstellen, aber nicht zum Erstellen von Benutzern oder Rollen. Eine Möglichkeit, den Fehler zu vermeiden, besteht darin, Benutzer und Rollen aus der Datenbankbereitstellung auszuschließen. Sie können dies tun, indem Sie das PreSource-Element für das automatisch generierte Skript der Datenbank bearbeiten, sodass es die folgenden Attribute enthält:

CopyAllUsers=false, CopyAllRoles=false

Informationen zum Bearbeiten des PreSource-Elements in der Projektdatei finden Sie unter How to: Edit Deployment Settings in the Project File. Wenn sich die Benutzer oder Rollen in Ihrer Entwicklungsdatenbank in der Zieldatenbank befinden müssen, wenden Sie sich an Ihren Hostinganbieter, um Unterstützung zu erhalten.

SQL Server-Timeout-Fehler beim Ausführen benutzerdefinierter Skripts während der Bereitstellung.

Szenario

Sie haben benutzerdefinierte SQL-Skripts angegeben, die während der Bereitstellung ausgeführt werden sollen, und wenn sie von Web Deploy ausgeführt werden, treten Timeouts auf.

Mögliche Ursache und Lösung

Das Ausführen mehrerer Skripts mit unterschiedlichen Transaktionsmodi kann zu Timeoutfehlern führen. Standardmäßig werden automatisch generierte Skripts in einer Transaktion ausgeführt, aber keine benutzerdefinierten Skripts. Wenn Sie die Pull-Daten und/oder das Schema aus einer vorhandenen Datenbankoption auf der Registerkarte " Sql packen/veröffentlichen " auswählen und ein benutzerdefiniertes SQL-Skript hinzufügen, müssen Sie transaktionseinstellungen für einige Skripts ändern, damit alle Skripts dieselben Transaktionseinstellungen verwenden. Weitere Informationen finden Sie unter How to: Deploy a Database With a Web Application Project.

Wenn Sie Transaktionseinstellungen so konfiguriert haben, dass alle identisch sind, aber dennoch diesen Fehler erhalten, besteht eine mögliche Problemumgehung darin, die Skripts separat auszuführen. Deaktivieren Sie im Raster "Datenbankskripts " auf der Registerkarte " Paket/Veröffentlichen von SQL" das Kontrollkästchen "Einschließen " für das Skript, das den Timeoutfehler verursacht, und veröffentlichen Sie das Projekt. Wechseln Sie dann zurück zum Raster "Datenbankskripts ", aktivieren Sie das Kontrollkästchen "Einschließen " dieses Skripts, und deaktivieren Sie die Kontrollkästchen "Einschließen " für die anderen Skripts. Veröffentlichen Sie das Projekt dann erneut. Dieses Mal, wenn Sie veröffentlichen, wird nur das ausgewählte benutzerdefinierte Skript ausgeführt.

Streamdaten des Websitemanifests sind noch nicht verfügbar.

Szenario

Wenn Sie ein Paket mithilfe der deploy.cmd-Datei mit der Option t (Test) installieren, wird die folgende Fehlermeldung angezeigt:

Fehler: Die Datenstromdaten von 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript' sind noch nicht verfügbar.

Mögliche Ursache und Lösung

Die Fehlermeldung bedeutet, dass der Befehl keinen Testbericht erstellen kann. Der Befehl kann jedoch ausgeführt werden, wenn Sie die y-Option (tatsächliche Installation) verwenden. Die Meldung gibt nur an, dass beim Ausführen des Befehls im Testmodus ein Problem vorliegt.

Für diese Anwendung ist "ManagedRuntimeVersion v4.0" erforderlich.

Szenario

Wenn Sie versuchen, die Bereitstellung auszuführen, wird die folgende Fehlermeldung angezeigt:

Der Anwendungspool, den Sie verwenden möchten, hat die Eigenschaft "managedRuntimeVersion" auf "v2.0" festgelegt. Für diese Anwendung ist "v4.0" erforderlich.

Mögliche Ursache und Lösung

ASP.NET 4 ist in IIS nicht installiert. Wenn der Server, auf dem Sie bereitstellen, Ihr Entwicklungscomputer ist und Visual Studio 2010 darauf installiert ist, wird ASP.NET 4 auf dem Computer installiert, ist aber möglicherweise nicht in IIS installiert. Öffnen Sie auf dem Server, für den Sie bereitstellen, eine Eingabeaufforderung mit erhöhten Rechten, und installieren Sie ASP.NET 4 in IIS, indem Sie die folgenden Befehle ausführen:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i

Microsoft.Web.Deployment.DeploymentProviderOptions kann nicht casten

Szenario

Wenn Sie ein Paket bereitstellen, wird die folgende Fehlermeldung angezeigt:

Das Objekt vom Typ 'Microsoft.Web.Deployment.DeploymentProviderOptions' kann nicht in 'Microsoft.Web.Deployment.DeploymentProviderOptions' umgewandelt werden.

Mögliche Ursache und Lösung

Sie versuchen, den IIS-Manager mithilfe der Web Deploy 1.1-Benutzeroberfläche auf einem Server bereitzustellen, auf dem Web Deploy 2.0 installiert ist. Wenn Sie das IIS-Remoteverwaltungstool zum Bereitstellen durch Importieren eines Pakets verwenden, aktivieren Sie das Dialogfeld "Neue Verfügbare Features ", wenn Sie die Verbindung herstellen. (Dieses Dialogfeld wird möglicherweise nur einmal angezeigt, wenn die Verbindung zum ersten Mal hergestellt wird. Um die Verbindung zu löschen und zu beginnen, schließen Sie den IIS-Manager, und starten Sie sie erneut, indem Sie inetmgr /reset an der Eingabeaufforderung eingeben.) Wenn eines der aufgeführten Features web Deploy UI ist und eine Versionsnummer niedriger als 8 ist, verfügt der Server, auf dem Sie bereitstellen, möglicherweise über 1.1- und 2.0-Versionen von Web Deploy installiert. Für die Bereitstellung von einem Client, der 2.0 installiert ist, muss der Server nur Web Deploy 2.0 installiert haben. Sie müssen sich an Ihren Hostinganbieter wenden, um dieses Problem zu beheben.

Die systemeigenen Komponenten von SQL Server Compact können nicht geladen werden.

Szenario

Wenn Sie die bereitgestellte Website ausführen, wird die folgende Fehlermeldung angezeigt:

Die systemeigenen Komponenten von SQL Server Compact, die dem ADO.NET Anbieter von Version 8482 entsprechen, können nicht geladen werden. Installieren Sie die richtige Version von SQL Server Compact. Weitere Informationen finden Sie im KB-Artikel 974247.

Mögliche Ursache und Lösung

Die bereitgestellte Website verfügt nicht über amd64 - und x86-Unterordner mit den systemeigenen Assemblys in ihnen unter dem Ordner "Bin " der Anwendung. Auf einem Computer, auf dem SQL Server Compact installiert ist, befinden sich die systemeigenen Assemblys in C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private. Die beste Möglichkeit zum Abrufen der richtigen Dateien in die richtigen Ordner in einem Visual Studio-Projekt besteht darin, das NuGet SqlServerCompact-Paket zu installieren. Die Paketinstallation fügt ein Skript nach dem Build hinzu, um die systemeigenen Assemblys in amd64 und x86 zu kopieren. Damit diese bereitgestellt werden können, müssen Sie sie jedoch manuell in das Projekt einschließen. Weitere Informationen finden Sie im Lernprogramm zum Bereitstellen von SQL Server Compact .

Fehler "Pfad ist ungültig" nach dem Bereitstellen einer Entity Framework Code First-Anwendung

Szenario

Sie stellen eine Anwendung bereit, die "Entity Framework Code First Migrations" und ein DBMS wie SQL Server Compact verwendet, die die Datenbank in einer Datei im Ordner App_Data speichern. Sie haben Code First Migrationen konfiguriert, um die Datenbank nach der ersten Bereitstellung zu erstellen. Wenn Sie die Anwendung ausführen, wird eine Fehlermeldung wie im folgenden Beispiel angezeigt:

Der Pfad ist ungültig. Überprüfen Sie das Verzeichnis für die Datenbank. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

Mögliche Ursache und Lösung

Code First versucht, die Datenbank zu erstellen, aber der Ordner "App_Data" ist nicht vorhanden. Sie haben entweder keine Dateien im Ordner App_Data , wenn Sie bereitgestellt haben, oder Sie haben im Fenster "Projekteigenschaften" die Option "Ausschließen" App_Data auf der Registerkarte " Package/Publish Web " ausgewählt. Der Bereitstellungsprozess erstellt keinen Ordner auf dem Server, wenn es keine Dateien im Ordner gibt, die auf den Server kopiert werden sollen. Wenn Sie die Datenbank bereits auf der Website eingerichtet haben, löscht der Bereitstellungsprozess die Dateien und den ordner App_Data selbst, wenn Sie im Veröffentlichungsprofil "Weitere Dateien am Ziel entfernen " ausgewählt haben. Um das Problem zu beheben, platzieren Sie eine Platzhalterdatei, wie zum Beispiel eine .txt-Datei, im Ordner App_Data, stellen Sie sicher, dass App_Data ausschließen nicht ausgewählt ist, und stellen Sie erneut bereit.

"COM-Objekt, das von seinem zugrunde liegenden RCW getrennt wurde, kann nicht verwendet werden."

Szenario

Sie haben erfolgreich die Veröffentlichung mit einem Klick verwendet, um Ihre Anwendung bereitzustellen, und sie erhalten dann diesen Fehler:

Fehler bei der Webbereitstellungsaufgabe. (Die Anforderung an die Remote-Agent-URL '<https://serverurl.com/msdeploy.axd?site=sitename>' konnte nicht abgeschlossen werden.)
Die Anforderung an die Remote-Agent-URL '<https://url/msdeploy.axd?site=sitename>' konnte nicht abgeschlossen werden.
Die Anforderung wurde abgebrochen: Die Anforderung wurde storniert.
COM-Objekt, das von dem zugrunde liegenden RCW getrennt wurde, kann nicht verwendet werden.

Mögliche Ursache und Lösung

Das Schließen und Neustarten von Visual Studio ist in der Regel alles, was erforderlich ist, um diesen Fehler zu beheben.

Fehler bei der Bereitstellung, da für die Veröffentlichung verwendete Benutzeranmeldeinformationen nicht über die SetACL-Autorität verfügen

Szenario

Die Veröffentlichung schlägt mit einem Fehler fehl, der angibt, dass Sie nicht über die Berechtigung zum Festlegen von Ordnerberechtigungen verfügen (das verwendete Benutzerkonto hat keine SetACL-Autorität).

Mögliche Ursache und Lösung

Standardmäßig legt Visual Studio Leseberechtigungen für den Stammordner der Website und Schreibberechtigungen für den ordner App_Data fest. Wenn Sie wissen, dass die Standardberechtigungen für Websiteordner korrekt sind und nicht festgelegt werden müssen, deaktivieren Sie dieses Verhalten, indem <Sie IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> zur Veröffentlichungsprofildatei hinzufügen (um sich auf ein einzelnes Profil auswirken) oder der Datei "wpp.targets" (um alle Profile zu beeinflussen). Informationen zum Bearbeiten dieser Dateien finden Sie unter How to: Edit Deployment Settings in Profile (.pubxml) Files.

Fehler 'Zugriff verweigert', wenn die Anwendung versucht, in einen Anwendungsordner zu schreiben.

Szenario

Ihre Anwendung hat einen Fehler, wenn sie versucht, eine Datei in einem der Anwendungsordner zu erstellen oder zu bearbeiten, da sie nicht die erforderliche Schreibberechtigung für diesen Ordner besitzt.

Mögliche Ursache und Lösung

Standardmäßig legt Visual Studio Leseberechtigungen für den Stammordner der Website und Schreibberechtigungen für den ordner App_Data fest. Wenn Ihre Anwendung Schreibzugriff auf einen Unterordner benötigt, können Sie Berechtigungen für diesen Ordner festlegen, wie es in den Tutorials "Ordnerberechtigungen festlegen" und "In der Produktionsumgebung bereitstellen" in dieser Reihe gezeigt wird. Wenn Ihre Anwendung Schreibzugriff auf den Stammordner der Website benötigt, müssen Sie verhindern, dass der schreibgeschützte Zugriff auf den Stammordner festgelegt wird, indem Sie <IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> zur Veröffentlichungsprofildatei (um ein einzelnes Profil zu beeinflussen) oder zur Datei „wpp.targets“ (um alle Profile zu beeinflussen) hinzufügen. Informationen zum Bearbeiten dieser Dateien finden Sie unter How to: Edit Deployment Settings in Profile (.pubxml) Files.

Konfigurationsfehler – targetFramework-Attribut verweist auf eine Version, die später als die installierte Version von .NET Framework ist.

Szenario

Sie haben erfolgreich ein Webprojekt veröffentlicht, das auf ASP.NET 4.5 ausgerichtet ist, aber wenn Sie die Anwendung ausführen (wobei der customErrors-Modus in der datei Web.config auf "Aus" festgelegt ist), wird die folgende Fehlermeldung angezeigt:

Das Attribut 'targetFramework' im <Kompilierungselement> der Web.config-Datei wird nur für die Zielversion 4.0 und höher von .NET Framework verwendet (z. B. '<compilation targetFramework="4.0">'). Das Attribut "targetFramework" verweist derzeit auf eine Version, die später als die installierte Version von .NET Framework ist. Geben Sie eine gültige Zielversion von .NET Framework an, oder installieren Sie die erforderliche Version von .NET Framework.

Das Feld "Quellfehler" auf der Fehlerseite hebt die folgende Zeile aus Web.config als Ursache des Fehlers hervor:

<compilation targetFramework="4.5" />

Mögliche Ursache und Lösung

Der Server unterstützt ASP.NET 4.5 nicht. Wenden Sie sich an den Hostinganbieter, um festzustellen, wann und ob Support für ASP.NET 4.5 hinzugefügt werden kann. Wenn das Upgrade des Servers keine Option ist, müssen Sie stattdessen ein Webprojekt bereitstellen, das auf ASP.NET 4 oder früher ausgerichtet ist.

Wenn Sie ein ASP.NET 4 oder ein früheres Webprojekt am selben Ziel bereitstellen, aktivieren Sie das Kontrollkästchen "Weitere Dateien am Ziel entfernen " auf der Registerkarte "Einstellungen " des Assistenten " Web veröffentlichen ". Wenn Sie keine zusätzlichen Dateien am Ziel entfernen auswählen, erhalten Sie weiterhin die Seite "Konfigurationsfehler".

Die Projekteigenschaftenfenster enthalten eine Dropdownliste für das Zielframework, aber Sie können dieses Problem nicht beheben, indem Sie das Zielframework einfach von .NET Framework 4.5 auf .NET Framework 4 ändern. Wenn Sie das Zielframework in eine frühere Framework-Version ändern, weist das Projekt weiterhin Verweise auf die Assemblys der späteren Frameworkversion auf und wird nicht ausgeführt. Sie müssen diese Verweise manuell ändern oder ein neues Projekt erstellen, das auf .NET Framework 4 oder früher ausgerichtet ist. Weitere Informationen finden Sie unter .NET Framework-Zielbestimmung für Websites.

Fehler bei mittlerer Vertrauensebene

Szenario

Wenn Sie Ihre Anwendung im Produktionsbetrieb ausführen, wird ein Fehler im Zusammenhang mit mittlerer Vertrauensstellung angezeigt.

Mögliche Ursache und Lösung

Viele Drittanbieter-Hostingdienste führen Ihre Website mit mittlerem Vertrauensniveau aus, was bedeutet, dass es einige Dinge gibt, die sie nicht tun darf. Anwendungscode kann z. B. nicht auf die Windows-Registrierung zugreifen und keine Dateien lesen oder schreiben, die sich außerhalb der Ordnerhierarchie Ihrer Anwendung befinden. Standardmäßig wird Ihre Anwendung auf Ihrem lokalen Computer unter voller Vertrauenswürdigkeit ausgeführt, was bedeutet, dass die Anwendung möglicherweise Vorgänge ausführen kann, die beim Bereitstellen in der Produktionsumgebung fehlschlagen würden.

Sie können die Anwendung so konfigurieren, dass sie in mittlerer Vertrauensstellung in der lokalen IIS-Umgebung ausgeführt wird, um Probleme zu beheben. Öffnen Sie dazu die Anwendung Web.config Datei, und fügen Sie ein Vertrauenselement im System.web-Element hinzu, wie in diesem Beispiel gezeigt.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

Die Anwendung wird jetzt in IIS auch auf Ihrem lokalen Computer in mittlerer Vertrauensstellung ausgeführt.

Unterlassen Sie dies, wenn Sie eine Anwendung in Azure App Service bereitstellen, da Azure keine mittlere Vertrauensstufe erfordert. Zum Zeitpunkt, als dieses Tutorial im Februar 2012 geschrieben wird, führt die Anwendung dieser Methode dazu, dass Ihre Anwendung in mittlerer Vertrauensstellung ausgeführt wird, was einen Fehler in Azure verursacht.

Wenn Sie Entity Framework Code First Migrationen verwenden und sie in einem Hostinganbieter bereitstellen, der Ihre Anwendung in mittlerer Vertrauensstellung ausführt, stellen Sie sicher, dass Version 5.0 oder höher installiert ist. In Entity Framework, Version 4.3, erfordert Migrationen volle Vertrauensstellung, um das Datenbankschema zu aktualisieren.

HTTP 404.17 Fehler nicht gefunden

Szenario

Wenn Sie die bereitgestellte Website auf Ihrem Entwicklungscomputer in IIS ausführen, wird die folgende Fehlermeldung angezeigt, dass der Server Default.aspx nicht verarbeiten kann:

HTTP-Fehler 404.17 – Nicht gefunden

Der angeforderte Inhalt scheint ein Skript zu sein und wird nicht vom statischen Dateihandler bereitgestellt.

Mögliche Ursache und Lösung

ASP.NET 4.5 ist möglicherweise nicht auf Ihrem Computer installiert. Siehe die Schritte im Lernprogramm "Bereitstellen in IIS als Testumgebung" in dieser Serie, in denen erläutert wird, wie ASP.NET 4.5 installiert wird.