6

Ich bin eine Reihe von. NET-Projekte auf verschiedenen Servern bereitstellen. Um dies zu tun, verwendet mein Team TFS, um zu erstellen, dann von der Build-Vorlage aufrufen ein Skript ps1, die Msdeploy verwendet, um an alle verschiedenen Server zu pushen. Es ist alles sehr unternehmungslustig und nein, ich bin nicht in der Lage, im Moment zu etwas anderem zu wechseln. Dieser Prozess funktioniert seit Monaten ohne Probleme.MSDeploy wirft seltsamen Fehler: Stream-Daten von xxxxx.dll ist noch nicht verfügbar

Heute ist die Bereitstellung einige Male hintereinander mit einigen unterschiedlichen Fehlern fehlgeschlagen. Das allein verwirrt mich (und ist möglicherweise nicht relevant), aber jetzt die, die ich konsequent bekomme, ist dies:

Ein Fehler trat auf, als die Anfrage auf dem Remote-Computer verarbeitet wurde. Die Stream-Daten von "C: \ Builds \ SomeDirectory \ obj \ Debug \ Paket \ PackageTmp \ AReferencedProject.dll" sind noch nicht verfügbar.

Dieser Fehler tritt auf, wenn mein Skript Msdeploy ausführt. Die DLL wird von einem Windows-Dienst verwendet, aber der Dienst wird gestoppt (soweit ich das beurteilen kann - der Dienststopp wirft keine Fehler auf) und die DLL ist nicht "schreibgeschützt". Die DLL existiert auf der Maschine, die erstellt/bereitgestellt wird, sowie auf der Maschine, auf der sie bereitgestellt wird.

Ich habe festgestellt, dass ich diesen Fehler vermeiden kann, wenn ich die DLL, die nicht verfügbar ist, von dem Server lösche, den ich bereitstelle, aber das Problem kommt sofort bei jeder nachfolgenden Bereitstellung zurück, wenn ich diese DLL vor jeder Bereitstellung manuell lösche .

Ich habe gesehen this problem, aber ich dränge nicht zu Azure, nur zu Windows Server 2008. Weiß jemand, warum Microsoft Web Deploy (msdeploy) diesen Fehler werfen würde?

Antwort

7

Ich hatte das gleiche Problem. Es wurde versucht, einige Male mit demselben Fehler zu implementieren.

Recycling der App-Pool auf dem Server löste das Problem, so dass ich eine normale Bereitstellung erneut ausführen konnte.

+0

Ich wünschte, ich würde dieses Problem wieder bekommen, so dass ich diese vorgeschlagenen Lösungen testen könnte :( – Mario

+0

Es hat wieder seinen hässlichen Kopf aufgezogen, aber ich Ich habe versucht, alle App-Pools zu rezyklieren, IIS neu zu starten und sogar den Build- und Webserver neu zu starten. Keine davon hat mir geholfen – Mario

+0

OK - das behebt das Problem Mein spezifisches Problem war, dass die DLL gesperrt war, genau wie Ihr Problem Bei der von mir geerbten Implementierung wurden sowohl Websites als auch Dienste bereitgestellt. Die Dienste wurden mithilfe von msdeploy auf eine Art gehackter Weise bereitgestellt, und ich stellte fest, dass es sich bei dem Buildprotokoll um einen Dienst mit diesem Problem handelte der Dienst, den ich gefunden habe, dass es stecken geblieben ist, so habe ich es getötet und neu gestartet - so ziemlich das gleiche wie den App-Pool für eine Site neu starten – Mario

0

Ich habe unter dem gleichen Problem wie Sie heute leiden und Ihre Frage ohne Antwort gestoßen, fing an, meine Haare ausziehen ... Es gibt nur so wenige Artikel oder Vorschläge zu diesem Thema, dass ich fast aufgegeben!!

Jedoch konnte ich das Problem für mich lösen, also posten ich meine Lösung, um sich selbst und jedem anderen zu helfen, der unter diesem Problem leidet.

Aus irgendeinem Grund schien es, dass meine Website & AppPool in IIS ein bisschen durcheinander gebracht hatte und begann, den Fehler wie in der obigen Frage beschrieben zu werfen. Um das Problem zu beheben, habe ich die ursprüngliche Site (die Site und den AppPool gestoppt) erstellt, eine neue Site und einen neuen AppPool mit den gleichen Einstellungen erstellt, mit WebDeploy veröffentlicht und es scheint sich nun wieder selbst zu verhalten.

Dies funktioniert möglicherweise nicht für andere, aber es wird hoffentlich geben Menschen etwas anderes zu versuchen.

+0

Dank John. Ich habe es in letzter Zeit nicht gesehen (ist einfach verschwunden, ohne dass ich etwas getan habe), aber ich werde diese Lösung versuchen, wenn es wieder seinen hässlichen Kopf aufzieht. Ich frage mich, ob es etwas mit Ordner Berechtigungen zu tun haben könnte seit Erstellen einer neuen Website löste es für Sie – Mario

2

Wir treten dieses Problem konsistent mit SQLite.Interop.dll (von ELMAH in unserer Webanwendung verwendet) auf. Wie ich am besten feststellen kann, bezieht sich das Problem auf die Tatsache, dass die DLL SQLite.Interop.dll verwandt wird unsere Web-App durch ELMAH, und aus irgendeinem Grund wird diese DLL nicht Schatten kopiert. Die Lösung, die wir verwenden, ist das recommended here des Recycelns des App-Pools bei jeder Bereitstellung. Unser Befehl ist wie folgt:

"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:recycleApp -dest:recycleApp="Default Web Site/ourApp",computerName="DeployComputer" 

Dies ermöglicht die nachfolgende msdeploy, die unser Bereitstellungspaket synchronisiert, um erfolgreich zu sein. Jemand antwortete auf dieses Forum und schlug vor, "-enableRule: AppOffline" zu verwenden, was wir nicht ausprobieren mussten.