18 messaggi dal 04 giugno 2007
Ciao, seguo ASPItalia da tempo, ma non ho mai partecipato ad un Forum.
Ora però ho un problema che mi blocca la Migrazione di una applicazione Web da Framework 1.1 a Framework 3.5.

Ho due ambienti con Windows Server 2003 SP2 e Framework 3.5 SP1.

Sul server di collaudo, guarda caso funziona tutto bene ed al deploy dell'applicazione sul server di produzione non funziona.

Il problema è il seguente:

-l'applicazione che va in errore genera un rendering della pagina che manda IE in errore con un messaggio "Expected ;"
sulla riga in rosso

Ne riporto solo la parte importante:

<script type="text/javascript">
//<![CDATA[
var Page_Validators = new Array(document.getElementById("WebCustomControl11_ValidatoriControl.ascx_CompareValidator1"));
//]]>
</script>

<script type="text/javascript">
//<![CDATA[
var WebCustomControl11_ValidatoriControl.ascx_CompareValidator1 = document.all ? document.all["WebCustomControl11_ValidatoriControl.ascx_CompareValidator1"] : document.getElementById("WebCustomControl11_ValidatoriControl.ascx_CompareValidator1");
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.controltovalidate = "WebCustomControl11_ValidatoriControl.ascx_DropDownList1";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.errormessage = "CompareValidator";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.evaluationfunction = "CompareValidatorEvaluateIsValid";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.valuetocompare = "-1";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.operator = "NotEqual";
//]]>
</script>

-L'applicazione che non va in errore genera un rendering

<script type="text/javascript">
<!--
var Page_Validators = new Array(document.getElementById("WebCustomControl11_ValidatoriControl.ascx_CompareValidator1"));
// -->
</script>

Da quello che ho letto sul vostro post
Post 2166

quest'ultimo tipo di rendering per il JS (con commento <!--) è legato al framework 2.0, mentre quello che va in errore (con commento //<![CDATA[) è legato al framework 3.5.

Questo significa che sul server di collaudo dove tutto funziona, in realtà asp.net sta utilizzando il framework 2.0 invece del 3.5 (e quindi sta fortunatamente sbagliando), ed invece sul server che va in errore asp.net sta utilizzando "correttamente" il framework 3.5.

Riuscite ad aiutarmi per :

- come faccio a far sì che tutto funzioni ?
ossia configurare il server di collaudo affinchè usi il framework 3.5 e non il 2.0

e soprattutto perchè il server di produzione va in errore ?
in effetti copiando lo script all'interno di una pagina, l'intellisense di VS2008 segnala lo stesso identico errore
"Expected ;" sul puntino rosso (si vede poco ma c'è)

var WebCustomControl11_ValidatoriControl[b].[b]ascx_CompareValidator1

Ma il codice è generato in automatico, dal WebResource.axd, giusto ?

Stefano
StefanoFar wrote:
- come faccio a far sì che tutto funzioni ?
ossia configurare il server di collaudo affinchè usi il framework 3.5 e non il 2.0

in realtà la 3.5 installa anche il SP della 2.0 (e questo vale anche per il SP1 della 3.5, che installa il SP 2.0 della 2.0), che poi porta questo combiamento nel rendering.
teoricamente ce l'avresti anche installando il SP stand alone. ad ogni modo, il motivo per cui l'output cambia in base ai server è una probabile non corretta installazione, perchè la versione 3.5 non si sceglie da nessuna parte, se non da VS.
http://blogs.aspitalia.com/daniele/post2204/Modo-Facile-Far-Andare-ASP.NET-3.5-Server.aspx
Ma il codice è generato in automatico, dal WebResource.axd, giusto ?

già, per cui è strano che ti chieda di aggiungere un carattere in uno script che non puoi controllare.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2007
In realtà, avevo tralasciato che i servers sono ben 4, e solo su quello di collaudo funziona tutto.
Mi sembra improbabile che tutte le altre tre installazioni risultino non corrette, avendo provato su tutti i servers.

Sembra tutto a posto:

Microsoft NET Framework 2.0 SP2
Microsoft NET Framework 3.0 SP2
Microsoft NET Framework 3.5 SP1

la virtual directory mappa correttamente aspnet_isapi.dll del framework 2.0.50727.

Più precisamente l'errore dell'intellisense non è di chiedere di aggiungere un punto, ma che non lo vuole come se non riconoscesse il sottoOggetto ascx_CompareValidator1 di WebCustomControl11_ValidatoriControl

infatti se scrivo
var WebCustomControl11_ValidatoriControl.ascx_CompareValidator1 da errore sul punto

se scrivo WebCustomControl11_ValidatoriControl non da errore

dove WebCustomControl11 è un componente che fa praticamante da MasterPage per disegnare un layout comune.
Intanto grazie per la sollecita risposta.
Modificato da StefanoFar il 10 ottobre 2008 16.49 -

Stefano
StefanoFar wrote:
In realtà, avevo tralasciato che i servers sono ben 4, e solo su quello di collaudo funziona tutto.

ed immagino che non ci siano altre differenze in mezzo.

Più precisamente l'errore dell'intellisense non è di chiedere di aggiungere un punto, ma che non lo vuole come se non riconoscesse il sottoOggetto ascx_CompareValidator1 di
WebCustomControl11_ValidatoriControl

ma l'intellisense lo citi perchè hai lo stesso problema in fase di sviluppo? perchè l'ID potrebbe essere in effetti diverso. non hai filtri o cose che ti comprimono o cambiano l'output su quelle macchine?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2007
L'intellisense lo cito semplicemente perchè facendo un banalissimo copy and paste
del viewsource delle due pagine, quella ok e quella con errore, in un progetto finto, vuoto, la pagina aspx ok non da problemi, la pagina aspx in errore mi segnala lo stesso identico problema segnalato da IE.

Secondo me i punti chiave sono:
1) perchè il server OK non renderizza tutta la parte di codice in oggetto ma si limita a generare lo script

<script type="text/javascript">
<!--
var Page_Validators = new Array(document.getElementById("WebCustomControl11_ValidatoriControl.ascx_CompareValidator1"));
// -->
</script>

mentre il server che va in errore oltre alla parte sopra (però con i commenti //<![CDATA[ invece di <!--) genera anche la parte di script

<script type="text/javascript">
//<![CDATA[
var WebCustomControl11_ValidatoriControl.ascx_CompareValidator1 = document.all ? document.all["WebCustomControl11_ValidatoriControl.ascx_CompareValidator1"] : document.getElementById("WebCustomControl11_ValidatoriControl.ascx_CompareValidator1");
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.controltovalidate = "WebCustomControl11_ValidatoriControl.ascx_DropDownList1";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.errormessage = "CompareValidator";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.evaluationfunction = "CompareValidatorEvaluateIsValid";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.valuetocompare = "-1";
WebCustomControl11_ValidatoriControl.ascx_CompareValidator1.operator = "NotEqual";
//]]>
</script>

2) ribadisco... perchè renderizza i commenti in modo diverso ? (secondo il Vs. post è la release del framework, ma sono le stesse)

3) Ho notato una ulteriore differenza nella renderizzazione html:
La dropdownlist viene renderizzata nel server in errore:

<select name="WebCustomControl11$ValidatoriControl.ascx$DropDownList1" id="WebCustomControl11_ValidatoriControl.ascx_DropDownList1">
<option value="-1">&lt;Seleziona&gt;</option>
<option value="1">Item1</option>
<option value="2">Item2</option>
</select>
<span id="WebCustomControl11_ValidatoriControl.ascx_CompareValidator1" style="color: Red;
visibility: hidden;">CompareValidator</span>

mentre nel server OK

<select name="WebCustomControl11:ValidatoriControl.ascx:DropDownList1" id="WebCustomControl11_ValidatoriControl.ascx_DropDownList1">
<option value="-1">&lt;Seleziona&gt;</option>
<option value="1">Item1</option>
<option value="2">Item2</option>

</select>
<span controltovalidate="WebCustomControl11_ValidatoriControl.ascx_DropDownList1" errormessage="CompareValidator" id="WebCustomControl11_ValidatoriControl.ascx_CompareValidator1" evaluationfunction="CompareValidatorEvaluateIsValid" valuetocompare="-1" operator="NotEqual" style="color:Red;visibility:hidden;">CompareValidator</span>

dove nella assegnazione al "name" della "<select .." nel primo caso usa il "$" e nel secondo il ":".

4) Per quanto riguarda i compressori, in effetti è installato "7-zip" su tutti i servers, ma non viene usato dal framework, almeno spero...!, viene usato solo per trasferire l'applicazione da un server all'altro...per l'aggiornamento...
Comunque vista la tua osservazione, ho fatto il test disinstallandolo e non è cambiato niente.

5) Il problema è realmente legato al fatto di utilizzare questo componente custom per il rendering del common layout, il famoso WebCustomControl11, perchè se chiamo dall'applicazione una pagina che non lo usa, tutto funziona.


Grazie ancora.
Modificato da StefanoFar il 10 ottobre 2008 18.05 -

Stefano
StefanoFar wrote:
2) ribadisco... perchè renderizza i commenti in modo diverso ? (secondo il Vs. post è la release del framework, ma sono le stesse)

perchè sta usando versioni diverse del Page Parser. altra spiegazione non c'è.
per capire perchè faccia questo, che tipo di compilation model utilizzi? code file/inline? code-behind?

3) Ho notato una ulteriore differenza nella renderizzazione html: La dropdownlist viene renderizzata nel server in errore:

e questo output è tipico delle versioni precedenti.

4) Per quanto riguarda i compressori, in effetti è installato "7-zip" su tutti i servers, ma non viene usato dal framework, almeno spero...!

non c'entra niente, io parlavo di compressori che lavorano sulla risposta, non di programmi per compressione.

5) Il problema è realmente legato al fatto di utilizzare questo componente custom per il rendering del common layout, il famoso WebCustomControl11, perchè se chiamo dall'applicazione una pagina che non lo usa, tutto funziona.

che è compilato con quale versione del .NET Framework?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2007
Ciao,
scusa se non ti ho più risposto ma mi sono dovuto dedicare ad altri problemi.

Ti rispondo perchè ho trovato la soluzione al problema, così chiudo il mio primo forum in bellezza...

essendo le mie pagine di tipo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
se aggiungo nel file Web.Config il tag :

<system.web>
<xhtmlConformance mode="Legacy"/>
....

funziona tutto.
E' vero anche che lo aggiunge di default VisualStudio in fase di conversione, ma me lo ero perso nell'aggiornamento in produzione.

Anche se questo, credo, mi porterà ad avere problemi poi, dovessi iniziare ad aggiungere un pò di AJAX, e dovendo quindi stringere poi a <xhtmlConformance mode="Transictional"/>

Grazie comunque per il tempo dedicatomi e le sollecite risposte.
Ciao.

Stefano
StefanoFar wrote:
E' vero anche che lo aggiunge di default VisualStudio in fase di conversione, ma me lo ero perso nell'aggiornamento in produzione.

questa cosa non ha granchè senso. intendo, ok che cambia l'output, perchè regola l'adaptive rendering, ma che smettano di funzionare non ha granchè senso. ad ogni modo, meglio che si sia risolto, almeno per ora.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.