Di .NET e di altre amenita'

ASP.NET

ASP.NET 2.0: Immagini con immagine di background

Lo sapevate che un'immagine può avere un'immagine di background? La cosa può sembrare assurda ma si rivela di una certa utilità quando si deve referenziare un'immagine in uno skin di ASP.NET. Avevo già accennato a questa tecnica in un mio precedente post, riguardo l'utilizzo di un div con immagine di background per poter spostare l'url di un'immagine nel css o nella skin. Tuttavia il div ha qualche limitazione dovuta al fatto che non ha una "consistenza solida" che invece un'immagine ha. Talvolta succede quindi che il div venga schiacciato oppure che non lo si riesca a linkare (così come è...

ASP.NET 2.0: Resource not found

Chi avesse provato ad utilizzare le risorse localizzate, spostandone lo storage nel database come ho spiegato tempo fa, si sarà reso conto che spesso Visual Studio 2005 restituisce un errore di compilazione che in buona sostanza informa che l'IDE non è in grado di trovare la risorsa specificata. Questo succede perchè le risorse localizzate vengono caricate già dall'ide di Visual Studio. In realtà quando inserite un ExpressionBuilder questo viene immediatamente convertito nel codice relativo ed eseguito, talvolta anche troppo rapidamente. Ora, nel mio esempio, ma anche in molti altri che si trovano in rete, il codice dell'ResourceProvider si appoggia alla istanza...

ASP.NET 2.0: Il workaround su ladybug

Per conoscenza vi informo che ho postato il workaround al bug che ho scoperto negli ultimi giorni su Microsoft Feedback Center al seguente indirizzo: http://lab.msdn.microsoft.com/ProductFeedback/ViewWorkaround.aspx?FeedbackID=FDBK38510#1 Nel post è presente una sommaria descrizione in inglese che rimanda all'esempio che ho postato stamattina. powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Il workaround su ladybug

ASP.NET 2.0: ObjectDataSource CultureInfo Bug Workaround

Click here for English Translation Come promesso ecco il codice di esempio relativo il Workaround del bug segnalato nei giorni scorsi. Innanzitutto occorre dire che, nonostante Microsoft sul Product Feedback Center continui a segnalare che non riesce riprodurre il comportamento, il bug è presente. Il problema probabilmente deriva dal fatto che la formattazione InvariantCulture è sostanzialmente analoga a quella es-US perciò il codice postato va in errore nelle culture diverse ma funziona perfettamente negli U.S.A. Veniamo ora brevemente a descrivere il metodo utilizzato per aggirare il problema: il concetto si basa sull'utilizzo dell'evento updating della datasource e sull'osservazione che il bug segnalato si...

ASP.NET 2.0: Ancora sulla ObjectDataSource

A proposito del bug che ho segnalato ieri sera, vorrei rispondere pubblicamente alla domanda che mi ha posto Michele con un commento. In effetti, la prima cosa che ho fatto, subito dopo aver segnalato il palese errore è stato di rivolgermi al Product Feedback Center dove ho trovato naturalmente che il bug era già stato segnalato. Ho provveduto così a informare che anche io ho validato il bug e speriamo che la prossima service pack del framework risolva la cosa. Per il momento però ho trovato un workaround, che però è parecchio laborioso. Portate pazienza, preparo un progettino e poi...

ASP.NET 2.0: Uno StaticSiteMapProvider molto flessibile

Su xe.net è apparso il mio secondo articolo che questa volta porta con se un componente riutilizzabile da non perdere. Si tratta di un SiteMapProvider che semplifica enormemente la creazione di provider custom che attingano i dati della mappa da una qualsiasi sorgente. Nell'esempio allegato all'articolo oltre al codice di questo StaticSiteMapProvider che risolve i problemi di concorrenza che affliggono queste implementazioni, anche un semplice provider alimentato da database SqlServer Link: Uno StaticSiteMapProvider molto flessibile Con l'occasione ho anche postato il secondo screencast dedicato al pattern singleton SCREENCAST: Implementare un Sigleton in C# per leggere il post originale o inviare un commento visita il...

ASP.NET 2.0: Collections di ConfigurationElement

Continuo sull'argomento System.Configuration, proponendovi un esempio di come creare una collection di ConfigurationElement custom. Per capire l'applicazione dell'esempiuo che sto per introdurre bisogna una ttimo soffermarsi su una particolare tipologia di elementi di configurazione. Mi riferisco ad esempio al nodo <providers> all'interno di una sezione di configurazione di MembershipProvider piuttosto che magari la sezione dedicata ad httpHandler e httpModules. All'interno di questo tipo di sezioni è possibile aggiungere elementi, ma anche rimuoverne con le seguenti sintatti: <add /> <remove /> <clear /> Nel framework 2.0 questo tipo di sezioni sono perfettamente definibili da parte dell'utente implementando una ConfigurationElementCollection. Si tratta in breve di estendere una classe del framework,...

ASP.NET 2.0: Leggere gli attributi sconosciuti da un ConfigurationElement

Se avete provato ad usare i nuovi strumenti per la gestione della configurazione in .NET 2.0, sicuramente ne sarete rimasti affascinati come è successo a me, che oramai cerco di usarli ovunque possibile. Vi sarà forse capitato anche di dover gestire delle configurazioni dinamiche sul tipo di quelle che adottano i vari provider di ASP.NET. Il MembershipProvider ad esempio - ma anche tutti gli altri in realtà - tipicamente espongono una serie di parametri di configurazione che si possono suddividere in parametri "generali", cioè che si applicano indistintamente a tutti i MembershipProvider e in parametri "specifici" che invece variano in...

ASP.NET 2.0: Ottenere il VirtualItemCount dalla GridView

Ho scritto una articoletto su come ottenere dalla GridView un dato di cui è gelosa custode. Si tratta di VirtualItemCount che chi ha utilizzato la vecchia DataGrid conosce bene. L'articolo, che esplora mediante Reflector il meccanismo di paging della GridView è molto interessante anche per capire le limitazioni del controllo in alcuni casi. link: ASP.NET 2.0: Ottenere il VirtualItemCount dalla GridView per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Ottenere il VirtualItemCount dalla GridView

Lipsum Add-in per Visual Studio 2005

Ecco un utile plugin per Visual Studio 2003 e 2005. Avete presente quei generatori di testi "riempitivi" che producono delle stringhe in latino? Ora ne esiste una versione add-in per l'IDE di casa Microsoft... Sed sem nibh, posuere in, sollicitudin a, cursus at, libero. Ops... lo trovate qui: http://hackingpsp.com/LoremIpsum.aspx powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: Lipsum Add-in per Visual Studio 2005

ASP.NET 2.0: Postback in a popup

Ormai sono abituato ad evitare a tutti i costi i popup nelle applicazioni web. Tuttavia mi rendo conto che c'è ancora qualcuno che non riesce a farne a meno, a torto o a ragione non mi interessa sapere. Durante la track web dei CommunityDays sono stato molto incuriosito da una domanda che è venuta dal pubblico e che recitava più o meno così: "è possibile effettuare il cross-page postback in un popup impostando il PostBackUrl?". La risposta naturale è no, ma quest'oggi, per puro diletto ho provato a capire se questo è proprio vero. In effetti se ragioniamo bene sul...

ASP.NET: AdvancedHyperLinkField

Mi è capitato di avere la necessità di creare all'interno di una colonna di gridview del codice javascript il quale potesse in qualche modo ottenere alcuni dei dati in corso di visualizzazione nella gridview stessa. Ad esempio, in riferimento alle popup di tipo subModal, di cui vi ho parlato in precedenza mi è stato necessario comporre dinamicamente l'url da passare alla chiamata Javascript che ne causa la comparsa. La gridview, a meno che non abbia preso un abbaglio, non dispone di una campo che permetta la formattazione di codice lato client, a meno che non si voglia utilizzare un TemplateField. Inutile...

SubModal: La soluzione giusta per i popup

La discussione in merito all'uso di popup nelle applicazioni web infiamma sempre gli animi. Personalmente sono dalla parte di chi cerca di evitarli a tutti i costi perchè il loro utilizzo va contro quello che è il normale funzionamento di una pagina web. Riconosco però che l'uso di popup, specialmente in quelle che io definisco "applicazioni web" in contrapposizione ai "siti web", è spesso necessario per abbreviare la navigazione e migliorare l'interazione dell'utente. In questi giorni ho scovato nella rete un libraria javascript, denominata subModal, che permette di risolvere questo problema con una eleganza impareggiabile. Si tratta di un tool che è...

.NET 2.0: Un CacheManager trasparente

Chi come me sviluppa in ambiente web, è abituato a fare uso, talvolta anche abuso della Cache che il runtime http integra nel framework ASP.NET. Non tutti sanno però che questa cache, può essere abbastanza facilmente essere usata anche in applicazioni Windows Forms. In soldoni è sufficiente creare un runtime http fittizio che supporti adeguatamente la cache e il gioco è fatto. In realtà si tratta di un trucco abbastanza vecchio e conosciuto, ma quest'oggi ho finalmente deciso di risolvere con problema in modo definitivo. Il fatto è che spesso è utile incapsulare il caching all'interno di classi che poi possono trovare...

ASP.NET 2.0: Una macro per fare l'attach ad aspnet_wp.exe

Mi sono finalmente deciso ad investire qualche minuto del mio tempo per farmi una macro che mi aiuti a risparmiare le decine di secondi che di solito impiego per fare l'attach al processo di aspnet_wp.exe, per debuggare un website in IIS su XP. Di solito preferisco questo metodo perchè così posso tenere aperto un browser sulla pagina che sto realizzando e non debbo eseguire uno stesso path all'interno del sito per arrivarci ogni volta con il webserver integrato di Visual Studio 2005. Ecco la macro scritta in puro VB.NET (arrggggggg!!!) Imports SystemImports EnvDTEImports EnvDTE80Imports System.DiagnosticsImports System.IOPublic Module AspNetMacros    Sub AttachASPNET()        Dim aspnet As EnvDTE.Process =             FindASPWP(_ApplicationObjects.DTE)        If Not aspnet Is Nothing Then            aspnet.Attach()            System.Threading.Thread.Sleep(2000)        Else            MsgBox("Cannot find aspnet_wp.exe")        End If    End Sub    Public Function FindASPWP(ByRef dte As EnvDTE.DTE) As EnvDTE.Process        For Each proc As EnvDTE.Process In dte.Debugger.LocalProcesses                    If (Path.GetFileName(proc.Name) = "aspnet_wp.exe") Then                Return proc            End If                Next        Return Nothing    End FunctionEnd Module Naturalmente potete anche customizzarla per fare l'attache al processo che desiderate. Spero...

ASP.NET 2.0: Create un parameter personalizzato per i DataSourceControl

Il nuovo modello di accesso ai dati basato sui DataSourceControl consente con facilità di fare il binding di controlli complessi come al GridView, la DetailView e la FormView con una facilità impensabile. I controlli DataSourceControl hanno un design fortemente configurabile per adattarsi alle varie esigenze. Ad esempio è possibile con facilità parametrizzare il risultato della DataSource per mezzo di Parametri che possono essere passati come argomenti ai metodi Select, Insert, Update e Delete. I parametri vengono poi tradotti in modo conforme al tipo di DataSourceControl. Ad esempio nel caso della ObjectDataSource essi divengono parametri del metodo richiamato durante una operazione di...

ASP.NET 2.0: Advanced Wev User Controls

I Web User Controls, più spesso conosciuti con il diminutivo di "ascx" per l'estensione che contraddistingue il loro template, sono sovente sottovalutati per la loro intrinseca facilità di uso. Questo è un grave errore in cui si incorre nell'errata supposizione che la loro semplicità sia ottenuta sacrificando la l'estensibilità tipica dei Custom Web Controls. COn questo breve esempio vorrei dimostrarvi quanto sto dicendo; Poniamo di creare un semplice UserControl come segue: <%@ Control     Language="C#"     CodeFile="TemplatedUserControl.ascx.cs"     Inherits="TemplatedUserControl" %><asp:Table     runat="server"     ID="tblTris"     CellPadding="5"     CellSpacing="0"     BorderStyle="None">    <asp:TableRow>        <asp:TableCell />        <asp:TableCell />        <asp:TableCell />    </asp:TableRow>    <asp:TableRow>        <asp:TableCell />        <asp:TableCell />        <asp:TableCell />    </asp:TableRow>    <asp:TableRow>        <asp:TableCell />        <asp:TableCell />        <asp:TableCell />    </asp:TableRow></asp:Table> Come evidente si tratta di uno UserControl che contiene una semplice tabella con nove celle, distribuite su tre colonne per tre righe. Ora andiamo a modificare la classe che implementa...

ASP.NET 2.0: MaintainScrollPositionOnPostback

MaintainScrollPositionOnPostback è un nuovo attributo della direttiva @Page che definirei senza ombra di dubbio impagabile. Per comprenderne il significato basta pensare a cosa succede alla pagina quando invochiamo un postback. Se ad esempio la pagina è molto lunga e scrolliamo verso il basso nel momento in cui interviene il postback normalmente il browser torna a posizionare la pagina all'inizio costringendoci ad un "lavoro di rotella" un po' scomodo. Impostando a true questa proprietà questo comportamento verrà modificato riportando sempre la pagina nella posizione in cui si trovava al momento del postback. Un grazie a Davide Vernole che stamane mi ha segnalato...

ASP.NET 2.0: Un generic per la ViewState

L'accesso alla ViewState nell pagine ASP.NET, ma anche a Session, Cache ed Application tipicamente soffre della mancanza di type-safety che costringe a scrivere dei cast ripetuti. Con il breve e semplice metodo generico qui riportato è possibile semplificare la gestione di questi utili strumenti public string MyValue{    get { return GetViewState<string>("MyValue", string.Empty); }    set { SetViewState<string>("MyValue", value); }}private T GetViewState<T>(string name, T defaultValue){    if (ViewState[name] == null)        SetViewState<T>(name, defaultValue);    return (T)ViewState[name];}private void SetViewState<T>(string name, T value){    ViewState[name] = value;} Il metodo descritto ha il vantaggio di consentire anche la lazy initialization del valore, così da evitare di avere dei fastidiosi null di ritorno. powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Un generic per la ViewState

ASP.NET 2.0: Anche la documentazione può avere bugs...

Nel Framework 2.0 sono presenti una serie di controlli che sono in gradi di sfruttare un nuovo tipo di binding ai dati. Mi riferisco ai controlli gerarchici, come ad esempio il TreeView, il quale ricevendo una datasouce che implementi una determinata interfaccia è in grado di visualizzare dati che non siano delle semplici tabelle. L'implementazione della datasource gerarchica, richiede la realizzazione di una serie di classi a supporto che a loro volta si basano su interfacce e classi astratte. Quest'oggi, nel districarmi in mezzo ad esse ho scoperto mio malgrado che quello che si trova in MSDN non è tutto oro...

ASP.NET 2.0: Quando leggere una property fa la differenza

Stamane ho fatto una scoperta che definirei sconcertante. La semplice lettura della proprietà Controls, in alcuni WebControl di ASP.NET causa notevoli malfunzionamenti al ciclo di vita della pagina. In particolare stavo utilizzando il metodo di cui ho parlato in un post precedente, per cercare dei controlli all'interno della gerarchia della pagina. Questa ricerca, se eseguita all'interno dell'OnInit, fa si che alcuni controlli non manifestino più gli eventi tipici. Ad esempio, un LinkButton non notificava più il "Click", e una FormView non era più in grado di gestire il postback correttamente. Dopo una lunga estenuante ricerca, sono riuscito ad individuare la riga...

ASP.NET 2.0: Quei maledetti 5 pixels

Se si prova a dare alle webparts un aspetto un po' più accattivante rispetto a quello che hanno di default ci si scontra con un piccolo ma fastidioso bug, riconosciuto da Microsoft come tale.  Le webpart, volenti o nolenti hanno sempre un padding di 5 pixel attorno al contenuto e di 2 pixel attorno al titolo. Tale padding non è impostabile in alcun modo, ma per stessa ammissione del team di ASP.NET 2.0 è hard-coded all'interno del framework. Esistono un paio di workaround suggeriti da Microsoft in ladybug, ma la loro applicazione è del tutto limitata e difficoltosa. L'unico modo veramente...

ASP.NET 2.0: Migrare i profili anonimi

Le nuove capacità di Profiling di ASP.NET 2.0 sono una feature molto apprezzabile anche in considerazione del fatto che sono in grado di gestire anche i profili anonimi, cioè consentono di persistere le impostazioni di profilazione anche per gli utenti che ancora non sono autenticati. Questo ad esempio torna utile nel momento in cui è necessario consentire la selezione della lingua anche ad un navigatore che non si è ancora registrato. Esiste però un piccolo problema per capire il quale vi farò un semplice esempio: immaginate di utilizzare il profilo anonimo appunto per persistere la lingua selezionata in un portale....

ASP.NET 2.0: Aggiungere WebPart a runtime

Quest'oggi mi sono scontrato con un problema che pareva di banale soluzione ma che si è rivelato essere decisamente subdolo. L'obbiettivo da raggiungere era di caricare le webparts di una pagina dinamicamente da un database invece che inserirle nel markup come di consueto. A prima vista può sembrare che il framework offra quanto necessario per compiere questo compito. Il WebPartManager ad esempio espone il metodo AddWebPart() che sembra fatto a posta per quello, ma dopo un po' di tentativi si intuisce che c'è qualcosa che non va. Il problema non è che il metodo in questione non funzioni, ma anzi, che funziona...

ASP.NET 2.0: Impostare a runtime le proprietà di una GenericWebPart

L'esperienza con le WebParts di questi giorni è stata l'occasione per scrivere un breve articolo per UgiDotNet che unitamente ad un utile Tip per aggirare un comportamento che potrebbe sembrare anomalo, descrive il meccanismo per cui ogni WebControl o UserControl può diventare una WebPart. Buona lettura a tutti. Link: http://www.ugidotnet.org/articles/articles_read.aspx?ID=108 powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Impostare a runtime le proprietà di una GenericWebPart

ASP.NET 2.0: tagMapping

Il web.config di ASP.NET 2.0 si sta rivelando una vera e propria miniera. Stamane, per puro caso ho scoperto un'altra chicca che mi accingo a proporvi. Celata, nei meandri del file di configurazione si trova una nuova sezione tagMapping che consente di sostituire tag all'interno di un Templated Control quale può essere una pagina, uno usercontrol o un qualunque controllo che esponga un template. Per chiarire il concetto provate a pensare di aver utilizzato un WebControl all'interno di una vostra applicazione. Dopo che avete effettuato il deploy dell'applicazione in produzione vi rendete conto che una versione successiva dello stesso controllo utilizzata nell'applicazione gli darebbe una...

ASP.NET 2.0: Applicare uno skin ad una proprietà di tipo Url

Se create un WebControl e poi decidete di applicare ad esso l'utilizzo dei temi è necessario avere un particolare accorgimento per le proprietà che questo espone se debbono contenere un url relativo alla root del tema. Ad esempio, se create una proprietà del WebControl, che espone l'url di una immagine che utilizzate per il rendering (ButtonImageUrl) e poi impostate questa proprietà nel file .skin vi renderete immediatamente conto che l'url che viene passato a runtime al WebControl è relativo la root dell'applicazione e non a quella del tema. Per ottenere la trasformazione relativa al tema occorre applicare alla property un...

ASP.NET 2.0: Rendere Skinnabili gli UserControl

Se provare a creare uno UserControl con ASP.NET 2.0 e poi tentate di registrarlo nel file di skin e applicando ad esso uno SkinId di settare alcune proprietà, vi troverete di fronte al seguente errore che ieri mi ha fatto perdere ben mezza giornata di lavoro: Error 1 The control type 'ASP.MyControl_ascx' cannot be themed. C:\DEV\Test\Portal\App_Themes\my_theme\my_theme.skin 42  Per risolvere questo problema occorre applicare un attributo alla classe che rappresenta lo UserControl in questo modo: [Themeable(true)]public partial class MyControl : UserControl{} Chissa poi perchè di default gli UserControl non dovrebbero essere skinnabili? Ma questo è un altro paio di maniche... powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo:...

ASP.NET 2.0: Url Rewriting

Curiosamente stamane Simone mi ha preceduto di un soffio nel parlarvi di Url Rewriting. In questi giorni infatti mi sono trovato nella necessità di soddisfare una particolare esigenza di rewriting che mi ha fatto approfondire l'argomento e avevo in mente di scrivere questo post da un po'. Preso atto che la scelta di Simone è ricaduta sull'implementazine di un IHttpModule, è evidente che il mio post non è una ripetizione perchè in realtà il metodo che ho usato è basato su una tecnica che nell'articolo di MSDN che Simone ha citato viene appena sfiorata. Eccomi quindi a proporvi il metodo...

ASP.NET 2.0: I ResourceProvider

Prosegue con questo post la saga, iniziata quando ho parlato degli ExpressionBuilders, dedicata alle risorse tipicamente utilizzate nelle applicazioni ASP.NET per depositare stringhe, e in genere proprietà da utilizzare nel rendering dell'interfaccia. In quel post spiegavo come realizzare un ExpressionBuilder che permettesse facilmente dei leggere le risorse da un database anziche da un più consueto file resx. Esiste tuttavia un altro metodo, per fare la medesima cosa, che in realtà è quello che il framework indica come quello corretto. Chi avesse provato a realizzare l'ExpressionBuilder forse si sarà reso conto che pur funzionando egregiamente esso ha delle limitazioni fastidiose. Giusto per indicarne una...

Web Services: Usare tipi condivisi tra diversi Web Services

Chiunque abbia sviluppto un'applicazione che si appoggia a diversi web-services si sarà trovato nella condizione di avere una moltitudine di proxy generati che fanno capo a diversi oggetti del dominio applicativo. Molto spesso ci si trova nella condizione di avere dei duplicati in questi oggetti che per il fatto stesso di essere classi diverse, pur avendo le medesime proprietà non sono "compatibili". Perciò, ad esempio avendo un webservice che restituisce un Ordine ed un secondo webservice che lo richiede in input non è possibile passare al secondo direttamente l'oggetto restituito dal primo. Nel framework 2.0 esiste una soluzione a questo...

ASP.NET 2.0: Sitemap again

Chi volesse creare un provider custom per sitemap, non avrà che da implementare i due metodi astratti della classe StaticSiteMapProvider, da cui già eredita la consueta XmlSiteMapProvider. In questo articoletto di Jeff Prosise, in breve viene spiegato come fare, con un piccolo esempio di codice nel quale viene realizzato un SiteMapProvider per Access. Link: http://msdn.microsoft.com/msdnmag/issues/05/06/WickedCode/ per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Sitemap again

ASP.NET 2.0: Sitemap a go-go

Ecco un paio di simpatici tools per generare Sitemap. La prima (http://odetocode.com/Blogs/scott/archive/2005/11/29/2537.aspx) è una macro che genera il file web.sitemap dalla struttura del sito web ricavata da visual studio. Il secondo (http://weblogs.asp.net/bleroy/archive/2005/12/02/432188.aspx) scandisce la struttura del sito ASP.NET e genera un file xml adatto a Google Sitemaps. per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Sitemap a go-go

Simulare il fallback delle Culture

Chi di voi ha mai avuto a che fare con localizzazione e globalizzazione di applicazioni .NET sa bene come funziona il meccanismo del fallback delle culture. In soldoni, per chi non lo sapesse si tratta di quel pricipio per cui se tra le risorse non esiste quella nella cultura che è richiesta, il framework provvedde a trovarne una il più possibile adatta. Quello che forse non è chiaro a tutti è che implementando l'expression builder di cui ho parlato in un post ...

A tu per tu con ADAM: Round #2

Stamane ho avuto nuovamente problemi con la configurazione del AspNetActiveDirectoryMembershipProvider. Mi sono trovato a spostare l'installazione di ADAM dalla mia macchina locale ad un server 2003 configurato come controller di dominio. L'unica differenza apparente nell'installazione risiede nel fatto che data la presenza di Active Directory la porta su cui girerà ADAM deve essere cambiata e di default verrà messa a 50000. In realtà al termine della configurazione seguendo i passi del mio precedente post mi sono reso conto che l'utility di configurazione di ASP.NET continuava a darmi il seguente errore: Logon failure: unknown user name or bad password. Inutile dire che completati...

ASP.NET 2.0: Propagare la CultureIfo a tutte le pagine della WebApplication

Torno ancora sull'uso delle risorse in ASP.NET 2.0 perchè ho scoperto un comportamento che di primo acchito mi ha creato qualche problema. Il problema derivava dal fatto di aver implementato l'ExpressionBuilder di ho parlato in un precedente post ed aver inserito le espressioni all'interno di alcuni Literal nella pagina. Chi avesse provato questo codice si sarà reso conto che la Culture restituita dal Thread corrente è sempre quella di default del sistema e che ogni tentativo per modificarla non ha l'esito sperato. In sostanza quello che accade è che il momento in cui vengono valutate le espressioni nella pagina è...

ASP.NET 2.0: Risorse e ExpressionBuilder

Tempo fa, quando ancora il Framework 2.0 era solo in beta avevo accennato all'uso di un nuovo tipo di espressioni per il recupero di risorse. Oggi, la pratica lavorativa di tutti i giorni ha portato alla luce le potenzialità di questo tipo di espressioni che nel gergo del framework si chiamano ExpressionBuilders. La potenza degli ExpressionBuilder è davvero notevole dato che con semplicità è possibile crearne di nuovi per soddisfare le esigenze di ogni progetto. Poniamo ad esempio di voler estrarre le risorse di una pagina ASP.NET (le stringhe localizzate ad esempio) da una tabella di un database SqlServer anzichè da un...

ASP.NET 2.0: Usare AuthorizationStoreRoleProvider con Windows XP

Se vi dovesse capitare di usare AuthorizationStoreRoleProvider da ASP.NET 2.0 non avrete alcun problema a farlo fintanto che la macchina in cui gira l'applicazione è Windows 2003. Tuttavia tipicamente le applicazioni vengono sviluppate su una macchina Windows XP quale è di solito quella dello sviluppatore. In questo caso sarà necessario installare dapprima il Windows Server 2003 Administration Tools Pack dato che su XP l'AuthorizationManager non è installato. Nell'adminpak, troverete anche uno script vbs che vi consente di sapere la sua versione se per caso fosse già installato. Vale la pena di lanciarlo prima di procedere all'installazione. Questo però non basta. Infatti...

ASP.NET 2.0: Chi non vuole il Global namespace?

Chi avesse sperimentato la creazione di pagine ASP.NET con Visual Studio 2005 si sarà certamente accorto che le classi che implementano tali pagine vengono create in quello che comunemente va sotto il nome di "Global Namespace". Questa nuova feature per quanto comoda può alle volte creare qualche noia se ad esempio nel team le scelte di design richiedono che le classi siano poste in dei namespace ben definiti. Considerato che l'aggiungere la dichiarazione del namespace a mano è decisamente scomodo, dato che poi ci si deve anche assicurare che l'attributo Inherits della direttiva @Page sia correttamente assegnato è consigliabile predisporre un...

ASP.NET 2.0: Legare le immagini ad un tema

Ieri lavorando con i temi di ASP.NET 2.0 mi sono imbattuto nell'esigenza di impostare una immagine all'interno della pagina mediante il file skin del tema. La cosa di per se banale, ha molte diverse soluzioni. Quella che di primo acchito viene in mente è di usare un controllo impostandone lo SkinId e in seguito referenziarlo nel file della skin. Questo però è un approccio che può andare bene solo se le immagini nella pagina sono decisamente poche, altrimenti il numero di controlli web presenti che il runtime dovrà elaborare aumenta vertiginosamente. Alla fine ho scelto una soluzione,...

A tu per tu con ADAM

"Ci ho buttato quasi una notte intera, e un pezzetto di questo pomeriggio, ma alla fine ne sono uscito vivo". Così comincia l'articolo che ho appena postato a testimonianza delle difficoltà che ho incontrato per completare la configurazione di ADAM, la versione applicativa di Active Directory e il provider per Active directory di ASP.NET. Ho deciso di mettere tutto assieme in un unico articolo perchè nele ricerche in rete non ho trovato una sola fonte che spiegasse la cosa nella sua interezza. Link: http://blog.boschin.it/articles/aspnetadam.aspx per leggere il post originale o inviare un commento visita il seguente indirizzo: A tu per tu...

ARTICOLO: ASP.NET Membership API

Nel numero di ottobre di Computer Programming sarà pubblicato il primo articolo di una serie dedicata a ASP.NET 2.0. L'argomento della prima puntata saranno le Membership API con un esempio di creazione di Custom Membership Provider e Role Provider. Nei mesi prossimi la serie continuerà toccando altri argomenti di ASP.NET 2.0 come le MasterPages, i Temi, e i nuovi WebControls. Curiosamente in questi giorni è uscito un analogo articolo di Andrea Saltarello, ma per chi non mastica bene l'inglese, oppure, come me, non ama scervellarsi a tentare di comprendere un testo in tale lingua, il mio articolo sarà sicuramente gradito. Buona lettura! powered by...

HIP: La patch e' online

Per la gioia di chi si è accorto che il precedente controllo hip soffriva di alcuni problemini fastidiosi, ecco online la nuova release. Essa introduce i seguenti miglioramenti: Timeout della HIP generata portato da 120 secondi a 600 secondi così anche i commentatori più lenti potranno scrivere con tutto comodo Generazione di un parola della lingua italiana estratta da un dizionario di 16000 lemmi invece di una combinazione casuale di lettere e numeri per migliorare la mnemonicità della combinazione. In questo modo non è più richiesto lo staccare lo sguardo dalla casella di testo in cui si digita L'installazione richiede la sostituzione dei seguenti...