<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>ASP .NET</title>
        <link>http://www.coding4art.com/category/8.aspx</link>
        <description>ASP .NET</description>
        <language>en-US</language>
        <copyright>Maurizio</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>L&amp;rsquo;evento Application_Start ed il suo corretto utilizzo</title>
            <link>http://www.coding4art.com/archive/2010/02/23/lrsquoevento-application_start-ed-il-suo-corretto-utilizzo.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Regola importante in una applicazione ASP .NET:&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;durante l'evento Application_Start dovrebbero essere assegnate solo variabili statiche e mai variabili d'istanza; ciò è dovuto al fatto che questo evento viene sollevato solo 1 volta durante il ciclo di vita dell'applicazione e, insieme all'evento Application_End, non è legato alla istanza in esecuzione della classe HttpApplication ma, al contrario, entrambi sono considerati eventi speciali.&lt;/p&gt;
&lt;p&gt;Infatti, ogni applicazione ASP .NET in esecuzione è associata ad un oggetto HttpApplication, capace di gestire una richiesta alla volta. Durante il suo ciclo di vita possono essere create più istanze della classe HttpApplication, ognuna delle quali in ottica di ottimizzazione delle performance può essere riciclata. Tuttavia, i due eventi sopra citati non vengono sollevati per ogni istanza creata di HttpApplication ma, come detto, solo 1 volta durante la vita di una applicazione.&lt;/p&gt;
&lt;p&gt;Un membro d'istanza creato in Application_Start quindi sarebbe visibile solo per la prima istanza creata di HttpApplication e non anche per le successive.&lt;/p&gt;
&lt;p&gt;Viceversa, l'evento sollevato per ogni istanza creata di HttpApplication è invece Application_Init.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/143.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2010/02/23/lrsquoevento-application_start-ed-il-suo-corretto-utilizzo.aspx</guid>
            <pubDate>Tue, 23 Feb 2010 22:29:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/143.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2010/02/23/lrsquoevento-application_start-ed-il-suo-corretto-utilizzo.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/143.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/143.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP .NET 4.0 #3 Ci&amp;ograve; che non &amp;egrave; cambiato</title>
            <link>http://www.coding4art.com/archive/2009/11/24/asp-.net-4.0-3-ciograve-che-non-egrave-cambiato.aspx</link>
            <description>&lt;p&gt;ASP .NET 4.0 è ormai alle porte, con la versione beta è possibile scoprire le novità  rispetto alla versione precedente, e non sono certamente poche, ma a livello di controlli lato server ce ne sono alcuni praticamente immutati rispetto alle precedenti versioni. Mi riferisco ad esempio al controllo &lt;strong&gt;Http File Upload&lt;/strong&gt;, rimasto identico nelle varie versioni di ASP .NET che si sono succedute. Questo controllo soffre di qualche problema e non è certo il massimo in ottica web 2.0, ovvero su siti dove è richiesto una elevata user experience.&lt;/p&gt;
&lt;p&gt;A meno di non utilizzare un controllo di terze parti probabilmente a pagamento, occorre fare i conti con il look del controllo rimasto identico nel tempo, con l'assenza di funzionalità  oggi richieste quali ad esempio la barra di progressione dell'upload in corso, e soprattutto con un fastidioso comportamento "by design", ovvero la perdita del contenuto (il nome completo di percorso del file scelto) ad ogni postback della pagina; quest'ultima caratteristica è resa necessaria da motivi di sicurezza.&lt;/p&gt;
&lt;p&gt;Se la pagina dispone di altri controlli che generano un postback, es. una dropdownlist, l'unico escamotage è quello di rendere il controllo File Upload l'ultimo controllo che genera postback in ordine di visualizzazione, in modo da invogliare l'utente ad interagire per ultimo con esso. In caso contrario, un postback della pagina provocherà  la perdita del suo contenuto, cioè del nome del file scelto, ed ovviamente obbligherà  l'utente a scegliere nuovamente il file da inviare.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/136.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2009/11/24/asp-.net-4.0-3-ciograve-che-non-egrave-cambiato.aspx</guid>
            <pubDate>Tue, 24 Nov 2009 21:42:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/136.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2009/11/24/asp-.net-4.0-3-ciograve-che-non-egrave-cambiato.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/136.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/136.aspx</trackback:ping>
        </item>
        <item>
            <title>L&amp;rsquo;evento page load &amp;egrave; eseguito 2 volte</title>
            <link>http://www.coding4art.com/archive/2009/11/15/lrsquoevento-page-load-egrave-eseguito-2-volte.aspx</link>
            <description>&lt;p&gt;Convertire un progetto ASP .NET dalla versione 1.1 ad una versione successiva del .NET Framework nasconde un inconveniente a cui occorre porre rimedio manualmente.&lt;/p&gt;
&lt;p&gt;L'inconveniente è dovuto alla introduzione delle partial class a partire dalla versione 2.0 del .NET Framework, in contrapposizione al codice generato dal designer nella versione 1.1.&lt;/p&gt;
&lt;p&gt;Questo fa si che importando il codice sorgente nella nuova versione utilizzata ci si ritrovi, ad esempio, con un event handler come questo nel metodo InitializeComponent&lt;/p&gt;
&lt;div style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: &amp;quot;Courier New&amp;quot;, courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id="codeSnippetWrapper"&gt;
&lt;div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &amp;quot;Courier New&amp;quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &amp;quot;Courier New&amp;quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; InitializeComponent() &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &amp;quot;Courier New&amp;quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum2"&gt;   2:&lt;/span&gt; { &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &amp;quot;Courier New&amp;quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Load += &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; System.EventHandler(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Page_Load); &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &amp;quot;Courier New&amp;quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #606060" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Questo innocente codice derivante dalla conversione fa in modo che l'evento Page Load sia generato 2 volte, una volta dall'handler presente nella partial class ed una volta da quello presente nel metodo InitalizeComponent.&lt;/p&gt;
&lt;p&gt;Per eliminare questo fastidioso inconveniente è sufficiente rimuovere l'handler presente nel metodo InitializeComponent&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/135.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2009/11/15/lrsquoevento-page-load-egrave-eseguito-2-volte.aspx</guid>
            <pubDate>Sat, 14 Nov 2009 23:17:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/135.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2009/11/15/lrsquoevento-page-load-egrave-eseguito-2-volte.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/135.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/135.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP .Net e i thread secondari</title>
            <link>http://www.coding4art.com/archive/2009/09/28/asp-net-e-i-thread-secondari.aspx</link>
            <description>&lt;p&gt;Interessantissimo &lt;a href="http://blogs.msdn.com/itasupport/archive/2009/09/27/sempre-chiamare-il-metodo-dispose.aspx" target="_blank"&gt;post&lt;/a&gt; di &lt;a href="http://blogs.msdn.com/itasupport/archive/tags/Stefano+Pronti/default.aspx" target="_blank"&gt;Stefano Pronti&lt;/a&gt; del nuovo &lt;a href="http://blogs.msdn.com/itasupport/" target="_blank"&gt;blog MSDN di Supporto Tecnico agli Sviluppatori&lt;/a&gt;, che spiega le disastrose conseguenze di non richiamare il metodo Dispose su risorse unmanaged, utilizzate all'interno di una web application.&lt;/p&gt; &lt;p&gt;Per farla breve, le risorse unmanaged utilizzavano un thread secondario rispetto a quello che prende in carico la web request, ed in questo thread secondario veniva sollevata una eccezione non gestita durante la fase di finalizzazione del garbage collector, che, come è noto, viene eseguito in un thread diverso.&lt;/p&gt; &lt;p&gt;In questo caso il comportamento di ASP .NET a partire dalla versione 2.0 è quello di interrompere immediatamente il processo in esecuzione, con conseguenze facilmente immaginabili.&lt;/p&gt; &lt;p&gt;Ho già parlato &lt;a href="http://xplayn.org/cs/blogs/maurizio/archive/2008/01/10/311.aspx" target="_blank"&gt;qui&lt;/a&gt; di questo comportamento di ASP .NET e di come sia possibile utilizzare la modalità pre-versione 2.0 di gestione delle eccezioni non gestite sollevate all'interno di thread diversi.&lt;/p&gt; &lt;p&gt;Anche a me è capitato di dover "impazzire" con una applicazione in produzione, abbastanza vasta, che soffriva di frequenti ed improvvise cadute della sessione corrente, con enorme disagio degli utenti.&lt;/p&gt; &lt;p&gt;Nel caso specifico non è stato indispensabile attaccare un debugger per ottenere il dump della memoria al momento dell'eccezione, è bastato debuggare il codice, che non conoscevo neanche bene, e scoprire che venivano creati thread aggiuntivi (!?) il cui codice, in particolari circostanze, sollevava l'eccezione fatale che provocava il riavvio del worker process.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/119.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2009/09/28/asp-net-e-i-thread-secondari.aspx</guid>
            <pubDate>Mon, 28 Sep 2009 00:24:09 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/119.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2009/09/28/asp-net-e-i-thread-secondari.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/119.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/119.aspx</trackback:ping>
        </item>
        <item>
            <title>HttpResponse.ApplyAppPathModifier</title>
            <link>http://www.coding4art.com/archive/2009/01/27/httpresponse-applyapppathmodifier.aspx</link>
            <description>&lt;p&gt;Se si usano le sessioni ASP .NET coockieless, ovvero sessioni in cui il SessionID viene inserito nell'url nella seguente forma:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;/App/(S(avsbnbml2n1n5mi5rmfqnu65))/default.aspx&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;il metodo &lt;strong&gt;ApplyAppPathModifier&lt;/strong&gt; della classe &lt;strong&gt;HttpResponse&lt;/strong&gt; risulta estremamente utile, poichè, passandogli come parametro stringa un path virtuale, restituisce lo stesso path con il SessiondID inserito correttamente nell'url, sollevando lo sviluppatore dalla costruzione manuale dello stesso. Ciò risulta evidente ogni qual volta è necessario utilizzare url caricati dinamicamente.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/102.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2009/01/27/httpresponse-applyapppathmodifier.aspx</guid>
            <pubDate>Tue, 27 Jan 2009 08:00:20 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/102.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2009/01/27/httpresponse-applyapppathmodifier.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/102.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/102.aspx</trackback:ping>
        </item>
        <item>
            <title>IIS ASP .NET Tab missing</title>
            <link>http://www.coding4art.com/archive/2008/06/10/iis-asp-net-tab-missing.aspx</link>
            <description>&lt;p&gt;Vi è mai capitato che nella console di amministrazione di IIS per una certa web application sparisse il tab ASP .NET senza apparente motivo ?&lt;/p&gt; &lt;p&gt;A me sì, con tutte le conseguenze del caso, e senza che riuscissi a trovare una soluzione nei forum e user group. Ora finalmente la soluzione esiste.&lt;/p&gt; &lt;p&gt;E' spiegata in modo dettagliato in questo &lt;a href="http://blogs.msdn.com/tom/archive/2008/04/17/asp-net-tab-missing.aspx"&gt;post&lt;/a&gt;, ed inoltre, come afferma l'autore del post, non esiste nessuna soluzione immediata che pone riparo a questa anomalia. &lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/89.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2008/06/10/iis-asp-net-tab-missing.aspx</guid>
            <pubDate>Tue, 10 Jun 2008 21:54:08 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/89.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2008/06/10/iis-asp-net-tab-missing.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/89.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/89.aspx</trackback:ping>
        </item>
        <item>
            <title>Messaggio di errore Ambiguous match found e httpParseException</title>
            <link>http://www.coding4art.com/archive/2008/03/17/messaggio-di-errore-ambiguous-match-found-e-httpparseexception.aspx</link>
            <description>&lt;p&gt;Scenario: web application che utilizza la versione 1.1 di ASP .NET migrata direttamente alla versione 3.5. Dopo la migrazione su una delle pagine ASPX viene sollevato una HttpParseException durante il caricamento della stessa. L'eccezione in questione, come si evince dal nome, viene generata dal runtime di ASP .NET quando il parsing di una pagina ASPX fallisce a runtime. Il messaggio di errore recita "Ambiguous match found", e quindi non aiuta granchè. La cosa curiosa è che l'eccezione non si verifica in ambiente di sviluppo ma solo sulla versione di deploying dell'applicazione, quindi non è "debuggabile" in Visual Studio 2008 ( a meno di non effettuare un debug in remoto, cosa quasi mai possibile in ambiente di produzione) , e quindi non è di facile risoluzione.&lt;/p&gt; &lt;p&gt;In questi casi la prima cosa che penso è: sicuramente altri developers sparsi per il mondo hanno già sperimentato lo stesso problema, quindi  mi metto a perlustrare blogs e forum e normalmente alla fine il problema si risolve !&lt;/p&gt; &lt;p&gt;E così è stato anche stavolta, anche se le cause di questa eccezione possono essere diverse e quindi non esiste una soluzione universalmente applicabile.&lt;/p&gt; &lt;p&gt;Alcune delle cause che possono produrre una httpParseException sono, in ordine sparso:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;la pagina contiene un campo hidden che ha un ID con lo stesso nome di una variabile querystring usata dalla stessa pagina;&lt;/li&gt; &lt;li&gt;la pagina ha un controllo (non ascx) inserito nel file ASPX (e quindi inserito nella partial class non visibile), e nel code-behind della stessa è dichiarato un altro controllo protected con lo stesso nome;&lt;/li&gt; &lt;li&gt;la pagina contiene un controllo ASCX con lo stesso nome di un controllo nativo ASP .NET;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Tutte queste situazioni generano evidentemente una ambiguità dei tipi, che porta all'eccezione.&lt;/p&gt; &lt;p&gt;Inoltre,  effettuando un deploy del sito con l'opzione "non aggiornabile", ovvero deselezionando l'opzione "Allow this precompiled site to be updateable", l'eccezione dovrebbe scomparire, salvo poi approfondire le sue cause e riabilitare nel caso l'opzione.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/78.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2008/03/17/messaggio-di-errore-ambiguous-match-found-e-httpparseexception.aspx</guid>
            <pubDate>Mon, 17 Mar 2008 03:58:15 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/78.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2008/03/17/messaggio-di-errore-ambiguous-match-found-e-httpparseexception.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/78.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/78.aspx</trackback:ping>
        </item>
        <item>
            <title>Partial rendering troubleshooting</title>
            <link>http://www.coding4art.com/archive/2008/03/13/partial-rendering-troubleshooting.aspx</link>
            <description>&lt;p&gt;Regola importante: l'update parziale di una pagina ASP .NET 2.0 (o successivi) attraverso l'UpdatePanel di Ajax non funziona in presenza di questo tag nel file di configurazione dell'applicazione (o nel machine.config):&lt;/p&gt; &lt;p&gt;&amp;lt;xhtmlConformance mode="Legacy"/&amp;gt;&lt;/p&gt; &lt;p&gt;Infatti, con questa impostazione la proprietà "SupportPartialRendering" dell'oggetto ScriptManager ritorna il valore false.&lt;/p&gt; &lt;p&gt;Il tag in questione imposta la modalità di rendering dei controlli, es.:  in modalità compatibile XHTML (mode="Transitional" o "Strict") oppure no (mode="Legacy"). &lt;/p&gt; &lt;p&gt;In ASP .NET 1.1 i controlli subivano un rendering non XHTML compatibile, e questo comportamento è stato modificato in ASP .NET 2.0, che invece effettua il rendering XHTML compliant. Questo significa che se si migra una applicazione scritta con la versione 1.1 del .NET Framework ad una versione più recente, il wizard di migrazione imposta l'xhtml conformance mode in modalità Legacy, provocando di fatto il mancato funzionamento del partial rendering. Per risolvere il problema è sufficiente impostare il tag mode a "Transitional" (valore di default) oppure "Strict", oppure rimuovere il nodo in modo tale da assegnargli il valore  di default, es.:&lt;/p&gt; &lt;p&gt;&amp;lt;xhtmlConformance mode="Transitional"/&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/77.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2008/03/13/partial-rendering-troubleshooting.aspx</guid>
            <pubDate>Thu, 13 Mar 2008 05:24:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/77.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2008/03/13/partial-rendering-troubleshooting.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/77.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/77.aspx</trackback:ping>
        </item>
        <item>
            <title>TextBox ReadOnly in .NET 2.0 e successivi</title>
            <link>http://www.coding4art.com/archive/2008/02/26/textbox-readonly-in-net-2-0-e-successivi.aspx</link>
            <description>&lt;p&gt;Il controllo TextBox di una web application dispone della proprietà ReadOnly che, ovviamente, impedisce l'interazione dell'utente con il controllo quando è impostata a True. &lt;/p&gt;
&lt;p&gt;Ma c'è un particolare importantissimo da considerare: a partire dalla versione 2.0 del .NET Framework il contenuto di un textbox in modalità "ReadOnly" è inviato al server durante un postback della pagina, ma il server ignora questo valore; in altre parole il contenuto del textbox viene perso durante un postback. Questo comportamento mira ad impedire attacchi alla sicurezza, che potrebbero modificare un valore che dovrebbe essere mantenuto inalterato.&lt;/p&gt;
&lt;p&gt;La perdita del valore del textbox può essere inaccettabile in certi contesti applicativi e potrebbe essere necessario applicare il comportamento in essere prima del Framework 2.0. Per far ciò è necessario impostare la proprietà ReadOnly come attributo del controllo, in questo modo:&lt;/p&gt;
&lt;p&gt;TextBox1.Attributes.Add("readonly","readonly")&lt;/p&gt;
&lt;p&gt;e non impostando a True la relativa proprietà.&lt;/p&gt;
&lt;p&gt;Così facendo il valore del textbox (ovvero la sua proprietà Text) viene inviato al server durante il postback ed è altresì disponibile per l'elaborazione.&lt;/p&gt;
&lt;p&gt; UPDATE: questo aggiornamento è, diciamo così, dovuto: il "copyright" di questa scoperta che ha portato via parecchio tempo prima di venirne a capo non è mio ma della mia collega di lavoro &lt;a class="" href="http://ines.zingarelli.biz/" mce_href="http://ines.zingarelli.biz"&gt;Ines&lt;/a&gt;. Io ho solo raccolto il troubleshooting per aiutare altri programmatori come un tempo altri programmatori hanno aiutato me&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/75.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2008/02/26/textbox-readonly-in-net-2-0-e-successivi.aspx</guid>
            <pubDate>Tue, 26 Feb 2008 03:13:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/75.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2008/02/26/textbox-readonly-in-net-2-0-e-successivi.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/75.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/75.aspx</trackback:ping>
        </item>
        <item>
            <title>Eccezioni non gestite in ASP .NET 2.0</title>
            <link>http://www.coding4art.com/archive/2008/01/10/eccezioni-non-gestite-in-asp-.net-2.0.aspx</link>
            <description>Le eccezioni non gestite generate da una applicazione ASP .NET compilata con la versione 2.0 del .NET Framework sono trattate diversamente da quanto avveniva con le applicazioni ASP .NET compilate con la versione 1.0/1.1. Queste ultime semplicemente ignoravano le eccezioni non gestite sollevate all'esterno del contesto corrente, es. un thread diverso da quello principale, mentre le eccezioni sollevate all'interno del contesto erano trattate normalmente come qualsiasi eccezione non gestita. Con il .NET Framework 2.0 questo comportamento è cambiato: le eccezioni non gestite sollevate fuori dal contesto provocano l'immediata interruzione del worker process e conseguentemente dell'applicazione. L'unica traccia è un laconico messaggio nell'event viewer  (System Log) del tipo "DefaultAppPool terminated unexpected", seguito da un ancor più generico messaggio nell'Application Log (Event Source: .NET Runtine 2.0 Error Reporting).&lt;br /&gt;&lt;br /&gt;Ma questo comportamento (il default) è legato ad una precisa policy di gestione delle eccezioni non gestite e può essere modificato in 2 modi:&lt;br /&gt;&lt;br /&gt;-Aggiungendo le seguenti righe nel file Aspnet.config:&lt;br /&gt;        &amp;lt;configuration&amp;gt; &lt;br /&gt;            &amp;lt;runtime&amp;gt;
        &lt;br /&gt;                &amp;lt;legacyUnhandledExceptionPolicy enabled="true" /&amp;gt;&lt;br /&gt;            &amp;lt;/runtime&amp;gt;
&lt;br /&gt;        &amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;br /&gt;        per fare in modo che le eccezioni non gestite siano trattate come nel .NET Framework 1.0/1.1, ovvero ignorate (scelta non             &lt;br /&gt;        raccomandata da Microsoft)&lt;br /&gt;&lt;br /&gt;-Creando un opportuno httpModule che si registra per l'evento AppDomain.CurrentDomain.Unhandledexception, attraverso il quale loggare i dettagli dell'eccezione  non gestita verificatasi.&lt;br /&gt;&lt;br /&gt;Il tutto è documentato in questo &lt;a href="http://support.microsoft.com/default.aspx?scid=kb%3bEN-US%3b911816"&gt;articolo&lt;/a&gt;, con un esempio di httpModule.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.coding4art.com/aggbug/70.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2008/01/10/eccezioni-non-gestite-in-asp-.net-2.0.aspx</guid>
            <pubDate>Thu, 10 Jan 2008 12:43:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/70.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2008/01/10/eccezioni-non-gestite-in-asp-.net-2.0.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/70.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/70.aspx</trackback:ping>
        </item>
    </channel>
</rss>