<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://blogs.ugidotnet.org/rgm/category/3003.aspx</link>
        <description>ASP.NET</description>
        <language>it-IT</language>
        <copyright>Gian Maria  Ricci</copyright>
        <managingEditor>alkampfer@nablasoft.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Jquery che potenza</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2008/08/19/93749.aspx</link>
            <description>&lt;p&gt;Dopo avere letto il libro JQuery in Action (che caldamente consiglio a tutti coloro che sviluppano web) ho iniziato a usare le prime istruzioni JQuery.. e debbo dire che rimango affascinato da come semplifichi la vita nella gestione delle classiche funzionalità ajax di un sito. Decisamente una libreria molto utile e potente.&lt;/p&gt;  &lt;p&gt;alk.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/93749.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2008/08/19/93749.aspx</guid>
            <pubDate>Tue, 19 Aug 2008 13:24:57 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/rgm/comments/93749.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2008/08/19/93749.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/93749.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/93749.aspx</trackback:ping>
        </item>
        <item>
            <title>L'importanza dei documenti di Deploy</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2008/07/25/93526.aspx</link>
            <description>&lt;p&gt;Fare un deploy di una applicazione non sempre è semplice, soprattutto se realizzata da vari sviluppatori, ogniuno dei quali gestisce parti che hanno bisogno di settaggi particolari, permessi particolari, file in alcune cartelle etc etc.&lt;/p&gt;  &lt;p&gt;Per questa ragione è necessario fare un documento che spiega in maniera dettagliata le procedure che si debbono seguire per effettuare il deploy di un sito.&lt;/p&gt;  &lt;p&gt;Purtroppo ieri, non per la prima volta, mi capita di guardare un sito che ha gravi problemi di performance, fino a generare talvolta degli OutOfMemoryException, si va nel web.config e ci si trova&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:41bd433c-4832-47b6-9d68-c4731c71062b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;trace enabled&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;true&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; pageOutput&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;false&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; requestLimit&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;10000&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; localOnly&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;true&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;


&lt;p&gt;Oltre al classico debug="true".&lt;/p&gt;

&lt;p&gt;Questo errore purtroppo è più tipico di quello che si pensa. Quando si mette un sito in produzione bisogna prima di tutto compilare tutti gli assembly in modalità Release, e poi bisogna assicurarsi che debug="false" e anche che il trace sia disabilitato. &lt;/p&gt;

&lt;p&gt;La morale è che non si può mettere un sito in produzione con gli stessi settaggi che si usano durante lo sviluppo e poi meravigliarsi se ci sono problemi di performance, il deploy dei siti asap.net è una operazione che spesso viene fatta in modalita xcopy, ma non va assolutamente bene. Per la sicurezza è necessario fare un utente specifico sotto cui far girare sia il webserver che il worker process asp.net, dare a quell'utente solo i permessi minimi (e questi debbono essere specificati nel documento di deploy), non mettere le stringhe di connessione ai sql server con nome utente e password ma usare l'autenticazione integrata etc etc.&lt;/p&gt;

&lt;p&gt;In sostanza, un deploy di una applicazione asp.net è una operazione delicata e va stilato un documento, anche informale, affinche chiunque possa effettuarlo senza introddure buchi di sicurezza o mettere online un sito che, come si dice dalle mie parti, &lt;em&gt;non si strascina :D&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;alk.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:C16BAC14-9A3D-4c50-9394-FBFEF7A93539:3f60f9ed-fee2-4be6-9eae-a579ff4273a9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;!--dotnetkickit--&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/93526.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2008/07/25/93526.aspx</guid>
            <pubDate>Fri, 25 Jul 2008 07:51:19 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2008/07/25/93526.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/93526.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/93526.aspx</trackback:ping>
        </item>
        <item>
            <title>Oggi giornata strana</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2008/04/23/92339.aspx</link>
            <description>&lt;p&gt;In un progetto web ad un certo punto vedo che in una certa pagina il layout è tutto sballato, la pagina in questione ha una funzione che renderizza dell'html dentro una label, cosi penso che la funzione sia sbagliata.&lt;/p&gt;  &lt;p&gt;Vado in debug e non trovo nulla di strano, fino a che non mi rendo conto che dal database arriva una stringa di testo che visivamente ha tipo un 250 caratteri ma la sua length è 989.......guardate che caratteri contiene ad un certo punto&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/WindowsLiveWriter/Oggigiornatastrana_CF34/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="223" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/WindowsLiveWriter/Oggigiornatastrana_CF34/image_thumb_1.png" width="508" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In sostanza il carattere dal 260 al 265 sono una serie di nothing ... se faccio un Text.Encoding.Unicode.GetBytes(previewData) e vado a vedere attorno alla posizione incriminata trovo&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/WindowsLiveWriter/Oggigiornatastrana_CF34/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="249" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/rgm/WindowsLiveWriter/Oggigiornatastrana_CF34/image_thumb_2.png" width="464" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;L'array di byte restituito da Text.Encoding.Unicode.GetBytes(previewData) ha 1978 caratteri ed è giusto visto che la lunghezza della stringa la da com e989, peccato che internamente ci siano una sequenza di zeri e dato che 00 00 è il terminatore stringa unicode, purtroppo la stringa viene gestita male e crea casino con l'update panel. Se infatti vado a vedere nel fiddler cosa viene passato trovo questo pezzetto &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;"&lt;em&gt;completa \ÿ\\ÿ\\ÿ\\ÿ\\ÿ\\ÿ\Dal primo&lt;/em&gt;" &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ovvero ci sono dei caratteri che nemmeno il fiddler riesce a renderizzare, questo significa che poi il javascript dell'update panel probabilmente va in errore dato che gli arriva uno stream di caratteri non validi......&lt;/p&gt;  &lt;p&gt;A qualcuno è già capitato?? &lt;/p&gt;  &lt;p&gt;Alk.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/92339.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2008/04/23/92339.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 12:47:51 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2008/04/23/92339.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/92339.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/92339.aspx</trackback:ping>
        </item>
        <item>
            <title>Attenzione ai formati delle date</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2008/02/06/91052.aspx</link>
            <description>&lt;p&gt;Spesso mi capita di vedere persone alle prese con problemi di formato di date, in particolare nelle applicazioni web. Nello specifico ci sono cose che sconsiglio vivamente, come ad esempio memorizzare le date in un database in un campo varchar. I Campi DateTime e soprattutto il tipo di dato DateTime serve a gestire le date, per cui sempre meglio usare quello che usare stringhe.
&lt;/p&gt;&lt;p&gt;Quando la conversione in stringa è inevitabile, come ad esempio quando dovete passare date tramite querystring, un altro errore comune è quello di usare il ToString() e poi il Parse o TryParse, il problema deriva dal fatto che in asp.net la cultura dell'UI può essere impostata in modo che sia la stessa della lingua del browser utilizzato, se convertite una data in stringa da un thread della ui, la salvate da qualche parte e poi magari la riprendete da un servizio che esegue task in background ecco che sorgono problemi, perché il servizio utilizzerà per default i formati della lingua impostata nella macchina. Ricordate quindi di convertire le date in stringa e viceversa sempre con lo stesso formato. La soluzione è utilizzare sempre uno stesso formato, cosa molto semplice se si ricorda che il ToString ha un metodo in overload che accetta un IFormatProvider
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas"&gt;&lt;span style="color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="color:black"&gt; converted;&lt;br /&gt;System.Threading.&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Thread&lt;/span&gt;&lt;span style="color:black"&gt;.CurrentThread.CurrentCulture = &lt;/span&gt;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt;&lt;span style="color:black"&gt;.CreateSpecificCulture(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"IT-it"&lt;/span&gt;&lt;span style="color:black"&gt;);&lt;br /&gt;converted = now.ToString();&lt;br /&gt;System.Threading.&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Thread&lt;/span&gt;&lt;span style="color:black"&gt;.CurrentThread.CurrentCulture = &lt;/span&gt;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt;&lt;span style="color:black"&gt;.CreateSpecificCulture(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"EN-en"&lt;/span&gt;&lt;span style="color:black"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#2b91af"&gt;DateTime&lt;/span&gt;&lt;span style="color:black"&gt; parsed;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;try&lt;/span&gt;&lt;span style="color:black"&gt; {&lt;br /&gt;   parsed = &lt;/span&gt;&lt;span style="color:#2b91af"&gt;DateTime&lt;/span&gt;&lt;span style="color:black"&gt;.Parse(converted);&lt;br /&gt;   &lt;/span&gt;&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;&lt;span style="color:black"&gt;.WriteLine(parsed);&lt;br /&gt;} &lt;/span&gt;&lt;span style="color:blue"&gt;catch&lt;/span&gt;&lt;span style="color:black"&gt; (&lt;/span&gt;&lt;span style="color:#2b91af"&gt;FormatException&lt;/span&gt;&lt;span style="color:black"&gt; fex) {&lt;br /&gt;   &lt;/span&gt;&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;&lt;span style="color:black"&gt;.WriteLine(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"Impossibile convertire {0} in data"&lt;/span&gt;&lt;span style="color:black"&gt;, converted);&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;System.Threading.&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Thread&lt;/span&gt;&lt;span style="color:black"&gt;.CurrentThread.CurrentCulture = &lt;/span&gt;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt;&lt;span style="color:black"&gt;.CreateSpecificCulture(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"IT-it"&lt;/span&gt;&lt;span style="color:black"&gt;);&lt;br /&gt;converted = now.ToString(&lt;/span&gt;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt;&lt;span style="color:black"&gt;.InvariantCulture);&lt;br /&gt;System.Threading.&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Thread&lt;/span&gt;&lt;span style="color:black"&gt;.CurrentThread.CurrentCulture = &lt;/span&gt;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt;&lt;span style="color:black"&gt;.CreateSpecificCulture(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"EN-en"&lt;/span&gt;&lt;span style="color:black"&gt;);&lt;br /&gt;parsed = &lt;/span&gt;&lt;span style="color:#2b91af"&gt;DateTime&lt;/span&gt;&lt;span style="color:black"&gt;.Parse(converted, &lt;/span&gt;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt;&lt;span style="color:black"&gt;.InvariantCulture);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;&lt;span style="color:black"&gt;.WriteLine(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"{0:D}"&lt;/span&gt;&lt;span style="color:black"&gt;, parsed);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;&lt;span style="color:black"&gt;.ReadKey();
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Nello snippet si fa vedere cosa succede se si converte una data in stringa e poi cambia la cultura del thread, la seconda parte dello snippet invece utilizza la cultura invariante, per cui qualsiasi sia la cultura corrente per il thread il formato non cambia e la data può essere convertita da e in una stringa senza problemi.
&lt;/p&gt;&lt;p&gt;Alk.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/91052.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2008/02/06/91052.aspx</guid>
            <pubDate>Wed, 06 Feb 2008 18:47:48 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2008/02/06/91052.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/91052.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/91052.aspx</trackback:ping>
        </item>
    </channel>
</rss>