2012-03-28 17 views
15

Ich habe einen Buildschritt, der Teil meiner Bereitstellungskonfiguration ist. Mein Kollege sagte mir, es gearbeitet hatte einmal in einem blauen MondBuildfehler: aspnet_client system_web 4_0_30319

ich immer diese Fehlermeldung konsistent gehalten, wenn ich diesen Build-Schritt lief:

Deleting dirPath (qa.comedy.net\aspnet_client\system_web\4_0_30319). [15:22:22]: 

[VSMSDeploy] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.\We 
\Microsoft.Web.Publishing.targets(3588, 5): Web deployment task failed.((3/28/2012 3:22:22 PM) An error occurred when the request was processed on the remote computer.) 

Attempt to perform an unauthorized operation on file '4_0_30319'. 

Es scheint, dass es versucht, den Ordner aspnet_client \ löschen system_web \ 4_0_30319, hat aber keine Berechtigung dazu.

wir diesen Build auf einer virtuellen Maschine ausführen.

Irgendwelche Vorschläge zur Lösung?

Alle Hilfe wird sehr geschätzt.

Dank

Antwort

13

hatte ich dieses Problem als Standort mit MSDeploy und Teamcity bereitstellen. Ich beschloss, es durch lösche diese Ordner von meiner Website aspnet_client\system_web\4_0_30319

+0

Ich hatte genau das gleiche Problem, wenn ftp-Publishing verwenden. Direkt nach dem Löschen wurde die oben genannte Ordnerstruktur auf dem Remote-Server erstellt. Ich habe keine Idee warum. Das hat es noch nie zuvor getan. Ich löschte einfach den oben genannten Ordner und ließ die Wurzel intakt und versuchte dann erneut zu veröffentlichen und es funktionierte. –

+0

Das funktioniert gut, aber Sie müssen dies weiterhin tun, da automatische Updates den Ordner immer wieder hinzufügen. Siehe meine Antwort für einige dauerhafte Lösungen. – MemeDeveloper

+0

Ist diese Ordnerstruktur etwas, das Web Deploy abstürzt, wenn Sie eine "Whatif" -Testausführung durchführen? –

0

Ich war mit Teamcity nicht, aber ich denke, Ich hatte auch diese Frage. Ich habe versucht, mit VS2010 WebDeploy zu Discount ASP.NET zu implementieren. Nachdem ich gelesen hatte, was doglin und Dan gepostet hatten, fand ich, dass ich dieses Problem umgehen konnte, indem ich das Kontrollkästchen "Zusätzliche Dateien auf Ziel speichern (nicht löschen)" aktivierte. Das ist vielleicht keine Option für alle, aber es hat für mich funktioniert.

0

Ich hatte das gleiche Problem während WebDeploy in TeamCity. Ich erhöhe schließlich die Privilegien für das WebDeploy-Konto, unter dem ich die WebDeploy-Aufgabe mache. Das Konto verfügt also über genügend Berechtigungen, um diesen Ordner zu löschen (lokale Administratorrolle).

9

Ja, Sie können diesen Ordner löschen und die nächste Bereitstellung wird funktionieren, aber mit dem nächsten Windows-Update, das das asp.net-Registrierungstool als Teil seiner Installation ausgeführt wird diesen Ordner wieder zu allen ASP.net-Sites auf IIS hinzufügen (mit den falschen Berechtigungen) - Ihre Bereitstellung wird also erneut fehlschlagen. Sie können dies vermeiden, indem

  • geben dem deploy Benutzer erweiterte Rechte (nicht eine große Lösung für offensichtlichen Gründen)
  • die Ordnerstruktur Ihrer SC hinzufügen, so dass es anstelle des Einsatzes eingesetzt wird versuchen, es zu löschen (nicht ideal, aber am einfachsten)
  • Stopp automatische Windows-Updates (nicht sinnvoll)
  • Sie könnten in der Lage sein so etwas wie diese http://blog.richardszalay.com/2012/12/18/demystifying-msdeploy-skip-rules/ zu tun, den Ordner, in Bereitstellung zu ignorieren (Ich habe nicht versucht)
+1

Ich habe das ein paar Mal gelandet, und endete mit Ihrem zweiten Vorschlag: Nachdem ich den Ordner manuell gelöscht habe, füge ich ein 'aspnet_client \ system_web_4_0_30319 \ placeholder.txt' zu SC hinzu, so dass der Ordner erstellt wird. Ich habe gerade mit diesem Artikel in der Textdatei verlinkt. Stimmen Sie zu, dass es nicht ideal ist, aber auch kein ASP-Tool, das automatisch eine zufällige Datei zu einer bereitgestellten Anwendung ausführt und hinzufügt. – gregmac

+0

@gregmac In der Tat sehe ich das Hinzufügen dieses Ordners durch die Updates als Fehler. Es sollte nicht passieren. – MemeDeveloper

2

Als MemeDeveloper mentions in their answer, eine Möglichkeit, dieses Problem zu beheben ist, dieses Verzeichnis einfach zu ignorieren. In der Tat ist dies die einfachste Lösung und erfordert nichts, was Sie zu Ihrem Quellcodeverwaltungs-Repository hinzufügen oder Ausgaben erstellen müssen. Fügen Sie einfach Folgendes zu Ihrem msdeploy hinzu.exe Befehl:

-skip:Directory="aspnet_client"

+0

Danke, diese Lösung hat ganz gut für mich funktioniert :-) –

+0

Hi! Wo machst du diese Veränderung? – Patrick

+0

@Patrick Wo immer der Befehl deploy gespeichert wird, z. eine Build App, eine CI App; was auch immer den 'msdeploy' Befehl ausführt. –