Share via


FAQ zur Bereitstellung von Webanwendungsprojekten für Visual Studio und ASP.NET

Dieses Thema beantwortet häufig gestellte Fragen zur, wie Bereitstellung von Webanwendungsprojekten, indem die folgenden Produkte verwendet:

Viele der Antworten werden Sie angewiesen, Bereitstellungseinstellungen zu ändern, indem sie die Datei des Veröffentlichungsprofils (.pubxml) oder die wpp.targets-Datei bearbeiten. Weitere Informationen zu dieser Vorgehensweise finden Sie unter Gewusst wie: Bearbeiten der Bereitstellungseinstellungen in Veröffentlichungsprofildateien (.pubxml) und der WPP.TARGETS-Datei in Visual Studio-Webprojekten.

Dieses Thema enthält folgende Abschnitte:

  • Kann ich bestimmte Dateien oder Ordner von der Bereitstellung ausschließen?

  • Warum nicht rufen alle Dateien in Ordner My bereitgestellt ab?

  • Kann ich bestimmte Dateien oder Ordner von außerhalb Ordner My einschließen?

  • Wie deaktiviere ich Web.config-Transformation?

  • Wann sollte ich Web Deploy-Parameter statt Web.config-Transformationen verwenden?

  • Wie deaktiviere ich eine Code First-Datenbank bereit, ohne Migrationen verwenden?

  • Wie kann ich den Bereitstellungsverpackungs- oder -Veröffentlichungsprozess gedebuggt werden?

  • Kann ich den Remote-Agent-Dienst über HTTPS mit One-Click-Veröffentlichung verwenden?

  • Kann ich die tempAgent-Anbietereinstellung für Webbereitstellung mit One-Click-Veröffentlichung verwenden?

  • Kann per One-Click-Veröffentlichung ein Paket zu Archivierungszwecken erstellt werden?

  • Kann ich angeben, dass bei jeder Erstellung einer Projektmappe ein Paket erstellt werden soll?

  • Wie halte ich meine Anwendungsdomäne von mehrmaligen Neustart während eines langen Bereitstellungsprozesses?

  • Warum erhalte ich einen Fehler, demzufolge ASP.NET 4 erforderlich ist, wenn ASP.NET 4 bereits installiert ist?

  • Warum schlägt die Bereitstellung fehl, wenn versucht wird, die Datenbankbefehle CREATE USER oder CREATE ROLE auszuführen?

  • Kann ich ein einzelnes Paket erstellen und damit Bereitstellungen in IIS 6 und IIS 7 ausführen?

  • Warum schlägt Remotebereitstellung für große Dateien aus, obwohl lokale Bereitstellung folgen?

Kann ich bestimmte Dateien oder Ordner von der Bereitstellung ausschließen?

Sie können die Anzahl der Dateien beschränken, die durch Auswählen der Optionen Nur zur Ausführung der Anwendung erforderliche Dateien oder Alle Dateien im Projekt auf der Registerkarte Web packen/veröffentlichen bereitgestellt werden. Wenn Sie die Option Alle Dateien im Projekt auswählen, können Sie mit der rechten Maustaste auf eine Datei in Projektmappen-Explorer klicken und Aus Projekt ausschließen auswählen, um deren Bereitstellung zu verhindern. Weitere Informationen darüber, welche Dateien ausgeschlossen werden, wenn Sie die Optionen Nur zur Ausführung der Anwendung erforderliche Dateien oder Alle Dateien im Projekt verwenden, finden Sie unter Warum werden nicht alle Dateien in meinem Projektordner bereitgestellt?.

Wenn diese Optionen für Sie nicht flexibel genug sind, bearbeiten Sie das .pubxml oder die .wpp.targets-Datei und fügen Sie ein ExcludeFilesFromDeployment-Element oder ein ExcludeFoldersFromDeployment-Element (oder beide) im PropertyGroup-Element hinzu. In jedem Element können Sie einen einzelnen Namen angeben, oder Sie können mehrere Namen angeben, die durch Semikolons (;) begrenzt werden, wie im folgenden Beispiel gezeigt:

<PropertyGroup">
  <ExcludeFilesFromDeployment>
    File1.aspx;File2.aspx
  </ExcludeFilesFromDeployment>
  <ExcludeFoldersFromDeployment>
    Folder1;Folder2
  </ExcludeFoldersFromDeployment>
</PropertyGroup> 

Weitere Informationen finden Sie in den folgenden Beiträge in Sayed Hashimis Blog:

  1. Webbereitstellungstool (MSDeploy): Build-Paket mit zusätzlicher Dateien oder das Ausschließen bestimmter Dateien

  2. Webbereitstellungstool (MSDeploy): Wie Sie Dateien vom Paket auf Grundlage Konfiguration ausschließt

Nach oben

Warum nicht rufen alle Dateien in Ordner My bereitgestellt ab?

Klicken Sie im Menü Projekt ausgewähltes Paket/Veröffentlichungseinstellungen, um die Registerkarte Web packen/veröffentlichen des Fensters Projekteigenschaften zu öffnen. Eine Dropdownliste im Abschnitt, der Bereitzustellende Elemente (gilt für alle Bereitstellungsmethoden) Bezeichnung, bietet drei Optionen an:

  • Nur zur Ausführung der Anwendung erforderliche Dateien. Dies ist der Standardwert. Visual Studio versucht, zu bestimmen, welche Dateien erforderlich sind, damit die Anwendung erfolgreich ausgeführt wird. Beispielsweise schließt dies Assemblys im Ordner bin, in Dateien, die während des Builds generiert werden, und in den Dateien, die als Inhalt markiert sind. Um anzuzeigen wenn eine Datei als Inhalt markiert ist, wählen Sie die Datei in Projektmappen-Explorer aus, und überprüfen Sie die Eigenschaft Buildvorgang der Datei im Fenster Eigenschaften. Sie können den Buildvorgang-Wert zu Inhalt ändern, um die Datei zu bewirken bereitgestellt werden, oder ändern Sie sie dem etwas Anderes, z Keine, um die Datei an bereitgestellt werden. Eine Dateitypen, die automatisch mit Inhalt gehören .master, .svc, .ashx, .asax, .skin, .browser, .config festgelegt werden, .and-Siteübersicht. Eine Datei muss im Projekt enthalten sind, um eine Eigenschaft Buildvorgang verfügen.

  • Alle Dateien im Projekt. Visual Studio stellt alle Dateien, die im Projekt enthalten sind, unabhängig von ihrer Buildvorgang-Eigenschaftswerte bereit.

  • Alle Dateien im Projektordner. Visual Studio stellt alle Dateien bereit, die im Projektordner und in Unterordnern befinden, und zwar unabhängig davon, ob sie im Projekt oder in ihren Buildvorgang-Eigenschaftswerten enthalten sind.

Wenn Sie mit MSBuild-Syntax vertraut sind, können Sie suchen Details darüber, wie diese drei Optionen in den folgenden Dateien arbeiten:

  • Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets

  • Microsoft.Web.Publishing.AllFilesInTheProject.targets

  • Microsoft.Web.Publishing.AllFilesInProjectFolder.targets

Diese Dateien können am folgenden Speicherort in einem Computer gefunden werden, der das installierte Visual Studio verfügt:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\

Nach oben

Kann ich bestimmte Dateien oder Ordner von außerhalb Ordner My einschließen?

Ja. Informationen hierzu finden Sie unter Erstellen Sie Paket mit zusätzlicher Dateien oder das Ausschließen bestimmter Dateien in Sayed Hashimis Blog.

Nach oben

Wie deaktiviere ich Web.config-Transformation?

Sie haben mehrere Möglichkeiten:

  • Kommentieren Sie bestimmte Transformationen in der Transformationsdatei.

  • Benennen Sie die Transformationsdatei an einen Namen, der keiner definierten Buildkonfiguration oder einem Veröffentlichungsprofil entspricht. Ändern Sie z. B. "Web.Debug.config" in "Web.Debugx.config". (Sie müssen möglicherweise die Datei außerhalb von Visual Studio umbenennen.)

  • Löschen Sie die Transformationsdatei. Wenn Sie die Datei angepasst haben, gehen die Anpassungen verloren.

  • Bearbeiten Sie die .pubxml-Datei oder .wpp.targets-Datei, indem Sie ein TransformWebConfigEnabled-Element dem PropertyGroup-Element hinzufügen und den Wert zu False festlegen.

Nach oben

Wann sollte ich Web Deploy-Parameter anstelle Web.config-Transformation verwenden?

Web Deploy-Parameter sind, komplexeres die als Transformationen von Visual Studio Web.config zu installieren jedoch sind sehr flexibel. Web Deploy-Parameter sind komplex, da sie viele anderen Bereitstellungsaufgaben automatisieren können, wie das Aktualisieren der Datenbank zu installieren und IIS-Einstellungen bereit. Web Deploy-Parameter sind für Web.config-Transformation nützlich, wenn Sie ein Bereitstellungspaket erstellen und wenn Sie das Paket erstellen, Sie nicht die Werte kennen, die in der bereitgestellten Web.config-Datei werden müssen. Web Deploy-Parameter können Sie Werte für die Parameter angeben, wenn das Paket installiert wird, nicht nur als dieser erstellt wird. Dies ist in Unternehmensumgebungen besonders nützlich, in der es üblich ist, damit andere Personen zum Erstellen und Installieren von Bereitstellungspaketen zuständig sind. Beispielsweise kannte kann der Entwickler, der ein Paket erstellt, keine bestimmten Kennwörter, die in der Datei Web.config sein müssen. Der IT-Administrator, der das Paket installiert, kann diese Werte eingeben, wenn das Paket installiert wird. Weitere Informationen finden Sie unter Parametrisierung VS. Web.config-Transformation auf Vishal Joshis Blog und Vorgehensweise: Verwenden von Web Deploy-Parametern in einem Webbereitstellungspaket.

Nach oben

Wie deaktiviere ich eine Code First-Datenbank ohne Migrationen bereit?

Wenn Sie eine Kontextklasse Entity Framework Code First implementieren, um auf eine Datenbank zuzugreifen, werden die Registerkarte Einstellungen des Assistenten Web veröffentlichen ein Kontrollkästchen an, das Sie Code First-Migrationen verwenden können, um die Bereitstellung für diese Datenbank zu automatisieren. jedoch, wenn Sie nur auf die Datenbank zugreifen, indem Sie das Code First APIs verwenden, und Code First wird nicht verwendet, um die Datenbank zu erstellen, können Sie Migrationen nicht verwenden, um sie bereitzustellen. In diesem Szenario die gewünschten, ist das Kontrollkästchen Datenbank aktualisieren, das Sie eine SQL Server-Datenbank bereitstellen können, dass Sie keinen Code First-Kontext für verwenden.

So fügen Sie eine Code First-Datenbank bereitstellen, ohne Migrationen zu verwenden

  1. In Visual Studio wenn Sie den Assistenten Web veröffentlichen geöffnet haben, schließen Sie es.

  2. In der Datei Web.config der Anwendung erstellen Sie ein zusätzliches Verbindungszeichenfolgenelement für die Datenbank. Geben Sie diesem neuen Verbindungszeichenfolgenelement einen Namen, der nicht entweder den Kontextklassennamen oder den vollqualifizierten Klassennamen entspricht.

  3. Erstellen Sie das Projekt, und öffnen Sie den Assistenten Web veröffentlichen und wählen Sie das Profil aus, das Sie arbeiten möchten.

  4. Wählen Sie die Registerkarte Einstellungen aus.

    Sie wird nun zwei Einträge für die Datenbank Datenbanken im Abschnitt der Registerkarte, einen für die Code First-Kontextklasse und einen für die neue Verbindungszeichenfolge in der Datei Web.config.

  5. Im Eintrag für die Code First-Kontextklasse, geben Sie die Verbindungszeichenfolge ein, den Sie der Anwendung soll, zur Laufzeit zu verwenden und das Code First-Migrationen anwenden Kontrollkästchen deaktivieren.

  6. Im Eintrag für die neue Web.config-Dateiverbindungszeichenfolge, geben Sie die Verbindungszeichenfolge, die verwendet werden soll, um Schemaänderungen während der Bereitstellung vorzunehmen, und ein Datenbank aktualisieren auszuwählen.

    Weitere Informationen dazu, wie Sie Datenbankbereitstellungseinstellungen, finden Sie unter Gewusst wie: Bereitstellen eines Webanwendungsprojekts mit der One-Click-Veröffentlichung in Visual Studio eingibt.

Nach oben

Wie kann ich den Bereitstellungsverpackungs- oder -Veröffentlichungsprozess gedebuggt werden?

Der Ausführlichkeitsgrad der Verpackung und Veröffentlichung wird durch die gleiche Visual Studio-Einstellung gesteuert, von der der MSBuild-Ausführlichkeitsgrad bestimmt wird. Wählen Sie im Hauptmenü Extras und dann Optionen aus. Erweitern Sie im Dialogfeld Optionen die Option Projekte und Projektmappen, und wählen Sie dann Erstellen und Ausführen aus. Sie sehen dann die Dropdownliste Ausführlichkeit der MSBuild-Projektbuildausgabe und können eine der folgenden Optionen aus dieser Liste auswählen:

  • Quiet

  • Minimal

  • Normal

  • Detailed

  • Diagnose

Diese Optionen entsprechen dem, was mit dem /verbosity-Flag oder dem /v-Flag festgelegt werden kann, wenn Sie MSBuild von der Befehlszeile aus ausführen. Weitere Informationen über MSBuild-Befehlszeilenflags, finden Sie unter MSBuild-Befehlszeilenreferenz.

Nach oben

Kann ich den Remote-Agent-Dienst über HTTPS mit One-Click-Veröffentlichung verwenden?

Anzahl Wenn Sie eine HTTPS-URL im Textfeld Dienst-URL des Dialogfelds Web veröffentlichen eingeben, verwendet Visual Studio automatisch den Windows-Verwaltungsdienst. Wenn Sie HTTPS verwenden möchten, wird empfohlen, den Windows-Verwaltungsdienst zu verwenden.

Nach oben

Kann ich die tempAgent-Anbietereinstellung für Webbereitstellung mit One-Click-Veröffentlichung verwenden?

Anzahl Wenn Sie die tempAgent-Anbietereinstellung verwenden möchten, müssen Sie die Befehlszeile Web Deploy oder die Datei deploy.cmd verwenden, die Visual Studio generiert, wenn es ein Bereitstellungspaket erstellt.

Nach oben

Kann per One-Click-Veröffentlichung ein Paket zu Archivierungszwecken erstellt werden?

Sie können zwei Veröffentlichungsprofile, eines, um das Projekt zu veröffentlichen und eine erstellen, das Backup-Paket zu erstellen. Anschließend nachdem Sie das Projekt veröffentlicht haben, müssen Sie zum Veröffentlichungsprofil nur wechseln, das das Paket und den auf Veröffentlichen erneut erstellt. Weitere Informationen dazu, wie Sie ein Veröffentlichungsprofil, das ein Paket erstellt, finden Sie unter Gewusst wie: Erstellen eines Webbereitstellungspakets in Visual Studio erstellt.

Nach oben

Kann ich angeben, dass bei jeder Erstellung einer Projektmappe ein Paket erstellt werden soll?

Ja. Bearbeiten Sie die Projektdatei, und fügen Sie im entsprechenden PropertyGroup-Element ein DeployOnBuild-Element hinzu. (Weitere Informationen dazu, wie Sie die Projektdatei bearbeitet, finden Sie unter Gewusst wie: Bearbeiten Sie Bereitstellungseinstellungen in der Projektdatei.) Im folgenden Beispiel wird ein PropertyGroup-Element für die Releasebuildkonfiguration veranschaulicht:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DeployOnBuild>True</DeployOnBuild>
  <!-- Additional settings -->
</PropertyGroup>

Wenn Sie diese Änderung in der Projektdatei vornehmen, stellen Sie sicher, dass das PropertyGroup-Element, das Sie aktualisieren, vor den Import-Anweisungen in der Projektdatei befindet. (Die DeployOnBuild-Eigenschaft muss vor Import für Microsoft.Web.Publishing.targets festgelegt werden.)

Das DeployDefaultTarget-Element muss auch auf Package festgelegt werden. Es ist jedoch optional, da es sich um den Standardwert handelt.

Dies ist alles, das Sie ausführen müssen, um Paketerstellung automatisch auszuführen, wenn Sie die Projektmappe aus der Befehlszeile erstellen. Um die automatische Paketerstellung auch arbeiten zu lassen wenn Sie die Lösung von Visual Studio erstellen, fügen Sie den folgenden Code der Projektdatei nach Import für Microsoft.CSharp.targets oder Microsoft.VisualBasic.targets hinzu:

<PropertyGroup> 
  <BuildDependsOn> 
    $(BuildDependsOn); 
    Package 
  </BuildDependsOn> 
</PropertyGroup>

Nach oben

Kann ich Delegierungsregeln konfigurieren, damit Entwickler Bereitstellungen auf Stagingservern ausführen, jedoch keine IIS-Einstellungen ändern können?

Dies ist in IIS 7 und höheren Versionen möglich. Informationen zum Delegieren von Bereitstellungsberechtigungen finden Sie in den folgenden Themen:

Nach oben

Wie halte ich meine Anwendungsdomäne von mehrmaligen Neustart während eines langen Bereitstellungsprozesses?

Wenn Sie mehrere Kopierbefehle ausführen müssen, die Anwendung bereitzustellen und es ein ausgeprägtes Zeitintervall zwischen ihnen gibt, die möglicherweise die Anwendungsdomäne zwischen Kopierbefehlen neu. Um einen Neustart zu verhindern, fügen Sie ein httpRuntime-Element (ASP.NET-Einstellungsschema)-Element der Datei Web.config hinzu und legen Sie das waitChangeNotification-Attribut die Anzahl der Sekunden fest um zu warten dass die Anwendungsdomäne zwischen Kopierbefehlen neu gestartet. Wenn Sie z. B. eine Wartezeit von fünf Sekunden angeben möchten, könnte das httpRuntime-Element so aussehen, wie im folgenden Beispiel gezeigt.

<configuration>
  <system.web>
        <compilation debug="false" targetFramework="4.0" />
    <httpRuntime 
      waitChangeNotification="5" />
  </system.web>
</configuration>

Wenn Sie sicherstellen möchten, dass die Anwendungsdomäne innerhalb eines bestimmten Zeitraums nach Ausführung des ersten Kopierbefehls neu gestartet wird, fügen Sie dem httpRuntime-Element ein maxWaitChangeNotification-Attribut hinzu, und legen Sie es auf die maximale Anzahl von Sekunden fest. Eine Web.config-Datei, die über das httpRuntime-Element mit beiden Attributen verfügt, könnte z. B. so aussehen, wie im folgenden Beispiel gezeigt.

<configuration>
  <system.web>
    <httpRuntime 
      waitChangeNotification="5"
      maxWaitChangeNotification="10" />
  </system.web>
</configuration>

Nach oben

Warum erhalte ich einen Fehler, demzufolge ASP.NET 4 erforderlich ist, wenn ASP.NET 4 bereits installiert ist?

Um eine ASP.NET 4-Webanwendung bereitzustellen, muss ASP.NET 4 auf dem Zielserver in IIS registriert werden. Außerdem muss .NET Framework 4 der Anwendungspool der IIS-Website, auf der Sie die Bereitstellung ausführen, zugewiesen werden. Wenn eine dieser Bedingungen nicht wahr ist, wird bei der Bereitstellung möglicherweise eine der folgenden Fehlermeldungen angezeigt:

  • Der standardmäßige .NET 4.0-Anwendungspool ist nicht vorhanden, oder die Anwendung konnte nicht hinzugefügt werden. Überprüfen Sie, ob ASP.NET 4.0 auf diesem Computer installiert ist.

  • Im Anwendungspool, den Sie verwenden möchten, ist die 'managedRuntimeVersion'-Eigenschaft auf 'v2.0' festgelegt. Diese Anwendung erfordert 'v4.0.'

ASP.NET 4 ist installiert, wenn Sie Visual Studio installieren. Der Installationsvorgang registriert ASP.NET 4 jedoch nicht automatisch bei IIS, und vorhandene IIS-Websites werden nicht automatisch .NET 4-Anwendungspools zugewiesen. Um dies zu korrigieren, registrieren Sie ASP.NET bei IIS, und legen Sie den Anwendungspool der Ziel-IIS-Website auf die .NET Framework-Version fest, die für das Paket erforderlich ist. Informationen zur Registrierung von IIS finden Sie unter ASP.NET IIS Registration Tool (Aspnet_regiis.exe).

Nach oben

Kann ich ein einzelnes Paket erstellen und damit Bereitstellungen in IIS 6 und IIS 7 ausführen?

Wenn eine der folgenden Bedingungen zutrifft, können Sie das gleiche Paket verwenden, um in IIS 6 und IIS 7 ausführen:

  • Sie aktivieren nicht das Kontrollkästchen Alle IIS-Einstellungen gemäß Konfiguration in IIS-Manager einschließen auf der Registerkarte Web packen/veröffentlichen.

  • Sie aktivieren das Kontrollkästchen Alle IIS-Einstellungen gemäß Konfiguration in IIS-Manager einschließen und erstellen das Paket unter IIS 6.

Sie können kein Paket unter IIS 6 bereitstellen, das unter IIS 7 erstellt wird, wenn Sie das Kontrollkästchen Alle IIS-Einstellungen gemäß Konfiguration in IIS-Manager einschließen aktivieren.

Nach oben

Warum schlägt Remotebereitstellung für große Dateien aus, obwohl lokale Bereitstellung folgen?

In der Regel, wenn Sie auf den Produktionsservern bereitstellen, stellen Sie über eine Firewall bereit. Wenn Sie Ende-vonStream Fehler für große Dateien abrufen, überprüfen Sie die Einstellungen in der Firewall. Wenn dies die Ursache des Bereitstellungsfehlers ist, wird möglicherweise Fehlermeldungen wie im folgenden Beispiel auf dem Quellcomputer:

Warning: Retrying the sync because a socket error (10054) occurred.

Retrying operation 'Serialization' on object MSDeploy.contentPath (sourcePath).

Auf dem Zielserver stoßen Sie möglicherweise Fehlermeldungen wie im folgenden Beispiel:

System.Net.HttpListenerException: An operation was attempted on a nonexistent network connection

Nach oben

Siehe auch

Konzepte

Einstieg in die Webbereitstellung für Visual Studio und ASP.NET