6

Sto distribuendo un numero di progetti .Net su server diversi. Per fare questo il mio team sta usando TFS per costruire, quindi dal modello di build chiama uno script ps1 che utilizza msdeploy per inviare a tutti i diversi server. È tutto molto intraprendente e no, non sono libero di passare a qualcosa di diverso al momento. Questo processo ha funzionato per mesi senza problemi.MSDeploy che genera un errore strano: i dati di flusso di xxxxx.dll non sono ancora disponibili

Oggi la distribuzione è fallita alcune volte di seguito con alcuni errori diversi. Questo solo mi confonde (e potrebbe non essere rilevante) ma ora quello che sto ottenendo in modo coerente è questo:

Si è verificato un errore quando la richiesta è stata elaborata sul computer remoto. I dati di flusso di "C: \ Builds \ SomeDirectory \ obj \ Debug \ Package \ PackageTmp \ AReferencedProject.dll" non sono ancora disponibili.

Questo errore si verifica quando il mio script esegue msdeploy. La dll è utilizzata da un servizio di Windows ma il servizio è interrotto (per quanto posso dire - il servizio non ha generato alcun errore) e la dll non è "sola lettura". La DLL esiste sul computer che sta costruendo/distribuendo e sul computer su cui viene distribuito.

Ho scoperto che posso evitare questo errore se elimino la dll che "non è disponibile" dal server a cui sto distribuendo, ma il problema torna immediatamente su ogni distribuzione successiva a meno che non elimini manualmente questa dll prima di ogni distribuzione .

Ho visto this problem ma non sto spingendo su Azure, solo su Windows Server 2008. Qualcuno sa perché Microsoft Web Deploy (msdeploy) genera questo errore?

risposta

7

Ho avuto lo stesso problema. Ho provato a schierare un paio di volte con lo stesso errore.

Riciclare il pool di app sul server ha risolto il problema, in modo da poter eseguire nuovamente una normale distribuzione.

+0

Vorrei avere di nuovo questo problema in modo da poter testare queste soluzioni proposte :( – Mario

+0

Ha ancora la sua brutta testa di nuovo, ma io ho provato a riciclare tutti i pool di app, a riavviare IIS e persino a riavviare sia il build che i server Web. Nessuno di questi mi ha aiutato – Mario

+0

OK: questo risolve il problema Il mio problema specifico era che la DLL era bloccata, proprio come il tuo problema. la distribuzione che ho ereditato è stata l'implementazione di siti e servizi Web. I servizi venivano implementati in una sorta di modo hacker con msdeploy e ho trovato, osservando il log di costruzione, che si trattava di un servizio che stava avendo il problema. il servizio ho scoperto che era bloccato, quindi l'ho ucciso e riavviato - praticamente la stessa cosa del riavvio del pool di app per un sito – Mario

0

Ho sofferto dello stesso identico problema che hai oggi e avendo trovato la tua domanda senza risposta, stava cominciando a strapparmi i capelli ... Ci sono solo pochi articoli o suggerimenti su questo argomento che ho quasi ha rinunciato!!

Tuttavia, sono stato in grado di risolvere il problema per me quindi sto postando la mia soluzione per aiutare te stesso e chiunque altro soffra di questo problema.

Per qualsiasi motivo, sembrava che il mio Sito & AppPool in IIS fosse un po 'confuso e ha iniziato a lanciare l'errore come descritto nella domanda precedente. Per risolvere questo problema, ho rimosso il sito originale (Stopped the Site e AppPool), creato un nuovo sito e AppPool con le stesse impostazioni, pubblicato su WebDeploy e ora sembra che si comporti di nuovo.

Questo potrebbe non funzionare per gli altri, ma si spera che dia alle persone qualcos'altro da provare.

+0

Grazie Giovanni. Non l'ho visto ultimamente (sono appena scomparso senza che io abbia fatto nulla) ma proverò questa soluzione se alzi di nuovo la sua brutta testa. Mi chiedo se avrebbe potuto avere qualcosa a che fare con i permessi delle cartelle da quando la creazione di un nuovo sito l'ha risolta per te – Mario

2

Stiamo riscontrando questo problema in modo coerente con SQLite.Interop.dll (utilizzato da ELMAH nella nostra applicazione Web.) Come meglio posso dire, il problema si riferisce al fatto che la DLL SQLite.Interop.dll è in uso da la nostra app Web tramite ELMAH e, per qualche motivo, questa DLL non viene copiata in ombra. La soluzione che stiamo utilizzando è quella recommended here di riciclare il pool di app su ogni distribuzione. Il nostro comando è il seguente:

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

Ciò consente al successivo msdeploy di sincronizzare il nostro pacchetto di distribuzione per il corretto funzionamento. Qualcuno ha risposto a quel forum suggerendo anche l'uso di "-enableRule: AppOffline", che non abbiamo avuto bisogno di provare.

Problemi correlati