2016-01-08 2 views
5

ProblemTFS CI Azure Web App (App Service) nicht Sperren aufgrund Datei erstellen (msvcr100.dll)

ein Bereitstellungsfehler bekommen, wenn sie einem Azure Web App von TFS CI veröffentlichen möchten. Eine Datei ist gesperrt und verhindert, dass der Build aktualisiert wird.

Symptome

  • Publishing manuell (Web Deploy in Visual Studio veröffentlicht) gelingt es in der Regel.
  • Das Stoppen der Web App und des Publizierens ermöglicht den Erfolg, jedoch wird dadurch der CI-Punkt vereitelt, wenn die Webanwendung jedes Mal angehalten und gestartet werden muss.
  • CI veröffentlichen in Web-Rollen und Worker-Rollen scheinen dieses Problem nicht zu haben, wir bekommen es nur auf die Veröffentlichung in Web Apps (früher Websites, der aktuelle Azure Portal Begriff ist jetzt App Service).
  • Nur das Publizieren von einem CI-Build über TFS schlägt auf diese Weise konsistent fehl.

Fehler

Web Deployment-Task fehlgeschlagen. (Web Deploy kann die Datei 'msvcr100.dll' nicht am Ziel ändern, da sie durch einen externen Prozess gesperrt ist. Um den Veröffentlichungsvorgang erfolgreich auszuführen, müssen Sie entweder Ihre Anwendung neu starten, um die Sperre aufzuheben. oder verwenden den Handler AppOffline Regel für .Net-Anwendungen auf Ihrem Versuch nächsten veröffentlichen Erfahren Sie mehr unter:.. http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE)

die Informationen auf den Link nicht sehr hilfreich ist.

ERROR_FILE_IN_USE Diagnose - Eine Zieldatei nicht überschrieben oder gelöscht werden kann, da es zur Zeit in Gebrauch ist. Lösung - Stellen Sie sicher, dass die Zieldatei vor der Synchronisierung nicht verwendet wird. Wenn Sie Inhalte mit einer gehosteten Website synchronisieren, die auf IIS 7 oder höher gehostet wird (mithilfe der AppHostConfig, iisApp oder contentPath-Anbieter), können Sie die Anwendung während der -Synchronisierung offline schalten, indem Sie die appOffline-Regel aktivieren.

Versuchte Auflösungen

bearbeiten

How to take web app offline while publishing? beschäftigt sich mit der App offline nehmen die EnableMSDeployAppOffline Konfiguration mit - leider ist diese Konfiguration scheint nur dann unterstützt werden, wenn WebDeploy durch Visual Studio (nicht CI) zu tun.

+0

Haben Sie eine Lösung für diese finden? –

+0

Keine Lösung gefunden, derzeit veröffentlichen wir dieses Projekt direkt von VS. Zum Glück befindet sich diese Website außerhalb unseres Hauptprodukt-Build-Zyklus, aber es bedeutet, dass wir unseren CI-Prozess überhaupt nicht nutzen können. Es hindert uns jedoch daran, unser Hauptprodukt vom Cloud-Service zum App-Service zu verlagern. –

+0

Das ist zum Kotzen, ich habe versucht, CI mit VSTS einrichten, aber ich bekomme diesen Fehler, und manuell Neustart der App macht keinen Sinn, soweit CI geht –

Antwort

2

Sie können die Web Deploy v3 in CI verwenden, um Ihre Webanwendung bereitzustellen.

In Web Deploy V3 haben wir die Unterstützung hinzugefügt, um eine Anwendung ASP.Net vor der Veröffentlichung automatisch offline zu schalten. Dies ist nützlich, wenn ein Benutzer sicherstellen möchte, dass seine Anwendung keine Sperre für eine Datei (z. B. SQL CE SDF-Dateien, die nur eine Verbindung zu der Datei bei ermöglichen) überschrieben wird, oder wenn sie sicherstellen möchten dass Besucher auf ihre Website den Veröffentlichungsprozess nicht beeinflussen können. Wenn der Veröffentlichungsprozess abgeschlossen ist, wird die App_Offline.htm-Datei entfernt und die Site wird wieder online sein.

Oder Sie können einen Powershell-Skript hinzufügen, wie im Anschluss an den Web-App Azure bereitstellen:

param($websiteName, $packOutput) 

    $website = Get-AzureWebsite -Name $websiteName 

    # get the scm url to use with MSDeploy. By default this will be the second in the array 
    $msdeployurl = $website.EnabledHostNames[1] 


    $publishProperties = @{'WebPublishMethod'='MSDeploy'; 
          'MSDeployServiceUrl'=$msdeployurl; 
          'DeployIisAppPath'=$website.Name; 
          'Username'=$website.PublishingUsername; 
          'Password'=$website.PublishingPassword} 

    Write-Output "Stopping web app..." 
Stop-AzureWebsite -Name $websiteName 

Write-Output "Publishing web app..." 
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1" 

. $publishScript -publishProperties $publishProperties -packOutput $packOutput 

Write-Output "Starting web app..." 
Start-AzureWebsite -Name $websiteName 

Referenz von: https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5

+0

Ich habe bereits True im Veröffentlichungsprofil festgelegt, aber der Fehler tritt immer noch bei der Veröffentlichung von TFS auf CI. –

+0

@ ดาว Verwenden Sie MSDeploy oder MSBuild? –

+0

Wie würde ich das einrichten mit VSO tfs build? – TWilly

0

Die neue "Deploy AzureRM Web App" Aufgabe hat eine Option um die App offline zu nehmen, was diesen Fehler verhindert.

Siehe Screenshot für Checkbox

enter image description here

+0

wow! Woher kommt dieser Screenshot? –

+0

https://www.visualstudio.com/en-us/features/continuous-integration-vs.aspx VS Online-Build-System. Nicht genau, wie es heißt, vNext, VSO? – TWilly

+0

In meinem Fall löst das das Problem nicht. Seltsam. – sebvst

Verwandte Themen