ASP.NET
Talvolta può essere utile stabilire se il
controllo è in esecuzione nel designer di Visual Studio oppure nel browser
magari per inibire l'inutile esecuzione di parti di codice (ad esempio l'uso di
sessioni o viewstate). E' sufficiente aggiungere una proprietà, ad esempio
DesignMode, come questa:
protected bool DesignMode{ get { ISite site1 = this.Site; if (site1 != null) { return site1.DesignMode; } return false; }}
La proprietà Site costituisce il connettore per
l'iterazione tra il controllo ed il suo contenitore. In questo caso
utilizziamo la proprietà DesignMode dell'interfaccia
ISite per verificare, appunto, se il controllo (o il
componente) si trova in modalità progettazione.
powered by IMHO 1.3
Chiunque sviluppa Custom Controls per ASP.NET conosce la classe ControlDesigner, dalla quale è possibile ereditare per costruire l'output personalizzato che Visual Studio mostra a Design-Time. Ad un primo impatto sembra quasi impossibile eseguirne il debug. In realtà è molto semplice e si può fare in due modi. Io ho seguito questa strada:
Aprite le proprietà del vostro progetto ed andate nella sezione "Debugging"
Impostate la proprietà Debug Mode su Program e impostate lo stesso Visual Studio come applicazione di partenza.
Cliccate OK
Impostate i breakpoint dove necessario ed avviate Visual Studio in Debug, si aprirà una nuova istanza nella quale potete Aprire/Creare...
... and ASP.NET 2.0 from Whidbey Beta 2 to RTM !!!
http://msdn.microsoft.com/asp.net/beta2/beta2rtmchanges/default.aspx
Da notare l'introduzione di un nuovo attributo CodeFileBaseClass per le direttive @Page e @Control. L'attributo consente al compilatore dinamico di ASP.NET (per intenderci, quello che compila le pagine .aspx) di ottenere un riferimento alla classe base "nonna" (la pagina da cui eredita la page code o, se preferite, il code-behind) qualora questa non sia una tra: Page, Control, WebControl, UserControl, HtmlControl o HtmlGenericControl.
Questo risolve il problema che si aveva con la Beta 2, dove il compilatore non era in grado, dalla pagina compilata "on-the-fly", di risolvere i controlli e gli...
Probabilmente Hacking è una parola un po forte dato che attualmente il suo significato più diffuso è quello di intrusione illegale nei sistemi informativi. Ma hacking significa anche studio dei sistemi informatici al fine di potenziarne capacità e funzioni. Ed è proprio questo il senso che assume nel titolo del mio ultimo articolo uscito con il numero 94 di ioProgrammo (Settembre 2005).
L'articolo illustra come è possibile utilizzare gli HttpModule e gli HttpHandlers, strumenti forse ancora poco conosciuti ed utilizzati, per gestire un semplice sistema di ... bè il resto dell'articolo lo trovate in edicola !!!
Segnalo inoltre gli articoli degli...
Pubblicata la lista dei cambiamenti applicati al .NET Framework 2.0 rispetto alla versione 1.1 e aggiornata alla Beta2. Di seguito i documenti pubblicati:
Differenze e problematiche di deployment con il .NET Framework 2.0
L'elenco delle Breaking Changes in formato chm
Fonte: ASPItalia.com
Attenzione!!! I documenti segnalati riportano ciò che è stato modificato ma non le novità!
In risposta a questo commento di Pietro al mio post, ho deciso di scrivere un post dedicato. Il problema esposto da Pietro è che lui non riusciva a passare un parametro, criptato con l'algoritmo Rijndael, ad una nuova pagina ASP.NET, perchè subentrava in questa il ValidateRequest di ASP.NET, un controllo in grado di prevenire gli attacchi CSS (Cross-Site Scripting).
Giustamente ci si chiede, che nesso ci può essere tra una stringa criptata ed un attacco CSS? In teoria nessuno, in pratica, per uno strano caso, la stringa incriminata contiene del potenziale codice dannoso.
Infatti, esaminando il codice di errore, noto una strana coincidenza:
ON?!?
Diamo un'occhiata...
A causa del diverso processo di esecuzione, ASP e
ASP.NET non possono integrarsi in maniera diretta. Ad esempio non è possibile
condividere lo stato della sessione o sfruttare la tecnica degli include
per condividere parti di codice. Durante il processo di update è possibile,
però, utilizzare la tecnica denominata "URL grabbing" per riutilizzare pagine
ASP all'interno delle nuove ASP.NET. Un primo passo è quello di creare un
Web User Control che sostituisce l'include, ed inseriamo il seguente codice
nell'evento load:
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create("http://localhost/test.asp");HttpWebResponse webRes = (HttpWebResponse)webReq.GetResponse();System.IO.StreamReader stream = new System.IO.StreamReader(webRes.GetResponseStream());Response.Write(stream.ReadToEnd());stream.Close();webRes.Close();
Il codice cattura l'output generato dalla pagina
test.asp e lo riporta all'interno dell'output del Web User Control.
Ovviamente questo è solo un esempio...
Se vi trovate davanti ad un errore del genere mentre tentate di recuperare dei valori dai file di risorse (.resx), in un'applicazione web, utilizzando un codice simile a questo:
ResourceManager rm = new ResourceManager("strings", Assembly.GetExecutingAssembly(), null);
assicuratevi di aver inserito in il percorso completo dei file di risorse, a differenza di quanto indicato in questa pagina (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemResourcesResourceManagerClassctorTopic4.asp). Infatti DOVETE aggiungere il namespace utilizzato nel vostro progetto, oltre alle eventuali sottodirectory contenenti i file di risorse. Ottenendo quindi:
[PROJECTNAMESPACES].[SUBDIRECTORY].[RESNAME]
Se ad esempio il namespaces (che di solito equivale al nome del progetto) è, con molta fantasia, WebProject1, la sottodirectory è languages e il prefisso dei file di risorse è strings...
Incuriosito dal post di Raffaele (Asp.net canonicalization bug: non fidatevi ciecamente della fix), ho effettuato alcuni test per verificare il bug del bug, ed ecco i risultati:
Primo test
- Impostato a zero la chiave di registro HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install;- Il setup funziona regolarmente;- La patch viene regolarmente installata e, soprattuto, funziona;
Secondo test
- Rimosso completamente la chiave di registro HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install- Il setup si blocca perchè non trova il framework installato;
I test sono stati effettuati su Windows 2000 Professional, IIS 5 e ASP.NET 1.1. La situazione descritta da Raffaele non si è verificata o probabilmente non sono riuscito a riprodurla (sempre se...
Come segnalato da Lorenzo Barbieri, Microsoft ha proposto la sua *pezza* al bug scoperto venerdì e diffuso sabato con un tam-tam tra i vari blogs.Forse la proposta è la più rapida e meno indolore, ma credo che un po di lavoro in più (non tanto) la soluzione proposta da Roberto Brunetti tramite l'utilizzo degli HttpModule sia la più efficiente perchè condivisibile tra più applicazioni su uno stesso server Web.
[update] Come sottolinea ancora Roberto Brunetti il bug segnalato non riguarda solo il modulo di autenticazione/autorizzazione, seppur molto importante, ma più in generale la gestione dell'url mapping nel tag location.
A voi la...