81 messaggi dal 12 settembre 2010
Salve a tutti,
segnalo un problema che si verifica in modo del tutto casuale su un sito e con una frequenza piuttosto bassa.
Ovviamente provoca un enorme disagio perchè quando accade nella peggiore delle ipotesi il sito risulta essere non raggiungibile (si genera un errore e quindi tutte le pagine mostrano questo errore a video) oppure alcune sezioni del sito (pagine) diventano non raggiungibili (viene mostrato l'errore a video).

Ho notato che, quando accade, di solito è in prossimità di alcune modifiche che vengono fatte sui file (a seguito di modifiche, integrazioni, etc...) e che vengono portate in produzione tramite TFS di Visual Studio.

Ho pensato che fosse in qualche modo legato alla compilazione delle .dll ma comunque non capisco come posso risolvere il problema o quantomeno gestirlo in qualche modo.

In particolare l'errore che viene generato è il seguente:

"[A]System.Collection.Generic.List' 1[DataType] cannot be cast to [B]System.Collection.Generic.List' 1[DataType]. Type A originates from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' in the context 'LoadNeither' at location 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Type B originates from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' in the context 'LoadNeither' at location 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'"

Questo è quello che viene segnalato sul front-end:

"DataTypeA cannot be cast to [B]DataTypeB. Type A originates from 'App_Code.qccb-295, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\610629fb\feee34be\App_Code.qccb-295.dll'. Type B originates from 'App_Code.xdr3vzn7, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\610629fb\feee34be\App_Code.xdr3vzn7.dll"

Di solito l'operazione manuale che sono costretto a fare per far ripartire il sito è questa:
1) vado su IIS e stoppo l'applicazione
2) vado all'interno della cartella provvisoria che viene indicata sull'errore visualizzato a front-end e rimuovo i file/cartelle che si trovano all'interno della cartella "feee34be" (in questo caso)
3) torno su IIS e riavvio l'applicazione

Spero che qualcuno possa aiutarmi.

Vi ringrazio in anticipo.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
dovresti riguadagnare tu il controllo sulla compilazione del web site anziché lasciar fare alla dynamic compilation. In pratica, fai fare il lavoro di compilazione a TFS che, al termine, sostituirà gli assembly nella directory bin anziché copiare tali e quali i file sorgenti. Tra l'altro, usando la dynamic compilation, costringi i tuoi utenti ad aspettare che l'applicazione sia ricompilata, prima che possa tornare a servire richieste. È un tempo di attesa breve ma che comunque dovresti evitare, anche in virtù del fatto che stai avendo l'altro problema più grave.

Leggi qui in fondo alla pagina degli svantaggi della dynamic compilation.
https://msdn.microsoft.com/en-us/library/ms366723.aspx?f=255&MSPPError=-2147217396

Lì trovi anche questo link che ti mostra come fare la precompilazione del website.
https://msdn.microsoft.com/en-us/library/bb398860.aspx
Fallo fare a TFS. Qui trovi delle indicazioni.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/38373303-b793-40b8-be23-2d38ff2d5430/how-can-i-build-website-project-using-tfs-2015?forum=tfsadmin

ciao,
Moreno

Enjoy learning and just keep making
81 messaggi dal 12 settembre 2010
Ciao Moreno,
grazie intanto per avermi risposto.
Non avrei mai immaginato questa cosa (anche sulla base di quelle che sono ad oggi le mie conoscenze :))

Pensavo di aver sviluppato male il sito in qualche sua parte e di aver provocato in qualche modo questo problema.

Ti chiedo:
se volessi lasciare la gestione della compilazione come avviene in questo momento (quindi senza TFS) non è possibile in nessun modo gestire questo problema? Cioè mi sembra strano che la Microsoft non sia a conoscenza di questa problematica e non ci sia un modo per intercettarla e gestirla?

Ti ringrazio in anticipo.

Grazie,
Alessio.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Alessio,
credo che il problema dipenda dal fatto che il sito non viene ricompilato tutto, ma solo le parti cambiate e questo manda in errore alcune pagine che non trovano più l'assembly di cui hanno bisogno.

Sto guardando la documentazione del nodo <compilation> del web.config che ti permette appunto di controllare come avviene la compilazione dinamica dei website.
https://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.100).aspx

Vedo che esiste un attributo "optimizeCompilations" che, se settato a true, causa una ricompilazione parziale e quindi potrebbe spiegare il problema. In caso, prova a settarlo a False e vedere se così la situazione migliora.
Prova anche a leggere la descrizione degli altri attributi, magari ce n'è qualcun altro interessante. Purtroppo non ti posso aiutare più di tanto perché non ho esperienze recenti di questa modalità di pubblicazione.

ciao,
Moreno

Enjoy learning and just keep making
81 messaggi dal 12 settembre 2010
Ciao Moreno,
grazie ancora per avermi risposto e proverò a seguire quest&#8217;ultima indicazione che mi hai dato.
Sinceramente non ho mai fatto fare la compilazione da TFS e non vorrei avventurarmi su una strada che non conosco per un sito abbastanza consistente.

Questi momenti di scambio sono veramente fantastici perché mi da la possibilità di apprendere da chi ne sa più di me :)

Grazie,
Alessio.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Alessio,
figurati, neanche io so cosa bisogna fare su TFS per fare la precompilazione del website. Però non ti far fermare da questo perché è una questione che con poca autoformazione si risolve velocemente.
Per esempio: puoi provare a fare la precopilazione con un altro website che contiene giusto 2 pagine e così fai esperienza. Quando ti senti abbastanza sicuro, provalo con il progetto reale ma fai la precompilazione in un'altra cartella, così da non interferire col sito principale. Quindi configuralo in IIS come sito secondario e verifica che funzioni. Dopo un po' di test, se funziona bene, cambi la directory del sito IIS principale in modo che punti a questa nuova versione precompilata.
Usa un approccio pragmatico come questo e risolverai definitivamente i problemi.

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.