71 messaggi dal 12 settembre 2010
Ciao a tutti,
sto realizzando un applicazione con ASP.NET Core 2.2 e database MySql.

A breve dovrei affrontare la parte di pubblicazione su un Hosting Windows (non si tratta di Azure).

Ho alcune domande al riguardo dato che non ho mai affrontato questa parte:
- se non ho capito male dovrei fare il deploy direttamente da Visual Studio generando in una cartella tutto il necessario da pubblicare poi sullo spazio web, corretto?
- dopo aver trasferito il tutto sullo spazio web cosa devo configurare?
- se nel tempo farò degli aggiornamenti come faccio se l'applicazione è in esecuzione?

Spero che qualcuno possa darmi qualche indicazione ed aiutarmi.

Vi ringrazio!!!
11.645 messaggi dal 09 febbraio 2002
Contributi
Ciao,


- se non ho capito male dovrei fare il deploy direttamente da Visual Studio generando in una cartella tutto il necessario da pubblicare poi sullo spazio web, corretto?

Esatto, puoi fare la stessa cosa anche lanciando dotnet publish da riga di comando.


- dopo aver trasferito il tutto sullo spazio web cosa devo configurare?

Tu hai l'accesso a questa macchina Windows via Desktop Remoto? In tal caso dovresti installare il .NET Core Hosting Bundle.
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#install-the-net-core-hosting-bundle

Se non hai accesso amministrativo alla macchina, ma hai solo uno spazio accessibile via FTP, allora ti basterà solo copiare i file purché il tuo hosting provider supporti ASP.NET Core. Cioè deve avere lui stesso installato il .NET Core Hosting Bundle sulle sue macchine. Questa è una condizione imprescindibile altrimenti la tua applicazione non funzionerà. Es. sull'hosting condiviso di Aruba non funziona.


- se nel tempo farò degli aggiornamenti come faccio se l'applicazione è in esecuzione?

Devi entrare nella console di IIS, stoppare l'applicazione, caricare i nuovi file e riavviare l'applicazione.
Oppure (preferibile), crei un file app_offline.htm nella root dello spazio web, così che l'applicazione ASP.NET Core verrà arrestata automaticamente. A quel punto puoi aggiornare i file e quando hai completato l'aggionamento, rimuovi il file app_offline.htm e l'applicazione verrà riavviata.
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.1#app_offlinehtm

Questo causerà necessariamente un downtime dell'applicazione, ma puoi crearti uno scriptino che lo faccia automaticamente di notte.

ciao,
Moreno
Modificato da BrightSoul il 14 marzo 2019 21:18 -

Enjoy learning and just keep making
71 messaggi dal 12 settembre 2010
Ciao Moreno,
non avrò accesso RDP alla macchina ma probabilmente avrò accesso tramite FTP.

Quindi se non ho capito male:
- se l’applicazione è in esecuzione creando un file “app_offline.htm” (simile a una pagina di cortesia?!?) viene arrestata e nel frattempo faccio un nuovo deploy da VS e aggiorno il tutto via FTP...poi rimuovendo il file “app_offline.htm” l’applicazione si riavvia con i nuovi sviluppi, corretto?

Se fosse così, mi sembra sia una soluzione poco ottimale o mi sbaglio? È in previsione qualche soluzione differente che renda il tutto più trasparente possibile?

PS: comunque ti ringrazio come sempre...sei il migliore

Alessio.
11.645 messaggi dal 09 febbraio 2002
Contributi
Ciao Alessio, ti ringrazio moltissimo, se mi scrivi privatamente ti mando una cosa. Io non so perché ma non riesco a scriverti con la messaggistica di Aspitalia.


se l'applicazione è in esecuzione creando un file "app_offline.htm" (simile a una pagina di cortesia?!?)


Esatto, puoi scriverci dentro un messaggio di cortesia che gli utenti vedranno mentre aggiorni l'applicazione.


poi rimuovendo il file app_offline.htm l'applicazione si riavvia con i nuovi sviluppi, corretto?

Sì, questo è un meccanismo che esiste fin da ASP.NET tradizionale e che è stato supportato anche in ASP.NET Core per le applicazioni pubblicate dietro a IIS grazie al suo ASP.NET Core Module.


Se fosse così, mi sembra sia una soluzione poco ottimale o mi sbaglio? È in previsione qualche soluzione differente che renda il tutto più trasparente possibile?

Sì, anche io penso che l'esperienza di pubblicazione lasci un po' a desiderare. Se vai su Azure è tutto fantastico perché lì hai il concetto di "deployment slot", che in pratica consiste di uno o più spazi di pubblicazione aggiuntivi in cui metti la nuova applicazione. Poi, quando l'aggiornamento è completo, scambi gli slot e la nuova applicazione subentra alla vecchia e comincia a ricevere richieste senza alcun downtime.

Mi sarebbe piaciuto vedere una cosa simile supportata anche dall'ASP.NET Core Module di IIS. Alla fine per avere una funzionalità base, vagamente simile a quella dei deployment slot, sarebbe stato sufficiente pubblicare l'applicazione in una sottodirectory diversa che subentra all'altra appena pronta a ricevere richieste. Probabilmente si può comunque fare alla buona smanettando col web.config ma ci sarebbe comunque un piccolo downtime causato dall'avvio della nuova applicazione.

Comunque, mi raccomando, assicurati che il tuo hosting provider supporti ASP.NET Core. Magari pubblica subito un'applicazione demo per verificare che tutto funzioni.

Enjoy learning and just keep making
71 messaggi dal 12 settembre 2010
Ciao Moreno,
da telefono non so come scriverti in pvt magari provo domani da PC.

Comunque sto ponendo domande anche abbastanza stupide su questo aspetto perché a lavoro essendo abituato a pubblicare aggiornamenti tramite TFS direttamente in produzione...o al massimo tramite FTP questa sorta di “down” dell’applicativo mi suona piuttosto strano.

È la mia primissima esperienza con ASP.NET Core e soprattutto con l’ausilio di MySql quindi ho trovato un solo hosting al momento e magari mi sarebbe piaciuto condividere questo aspetto...

Comunque siamo in contatto anche su LinkedIn al massimo se posso permettermi ti disturbo li...ma non voglio essere invadente

Alessio.
11.645 messaggi dal 09 febbraio 2002
Contributi
Ah ok, se stai usando TFS prova a creare un package Web Deploy per automatizzare il rilascio.
https://www.dotnetcatch.com/2018/06/13/webdeploy-packaging-with-asp-net-core-2-0-includes-function-apps/

Però se l'hosting provider supporta solo FTP non mi viene in mente altro modo se non quello di scriptare la creazione del file app_offline.htm, pubblicare e rimuovere app_offline.htm.

Con ASP.NET tradizionale era possibile pubblicare la singola pagina ASPX per sfruttare la ricompilazione dinamica. Adesso con ASP.NET Core non è più possibile, tranne forse che per le view Razor, che comunque vengono compilate anch'esse in un assembly per impostazione predefinita.



se posso permettermi ti disturbo li?

Assolutamente sì, figurati :)

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.