by Andrea
30 August 2007 20:08
Nell'AsyncPostbackTrigger c'è la possibilità di non valorizzare la proprietà EventName. Se EventName non viene valorizzato verrà usato l'evento di default del controllo specificato nel trigger.
Per i controlli di ASP.NET 2.0 gli eventi di default sono i seguenti:
- Button --> Click
- Calendar --> SelectionChanged
- CheckBox --> CheckedChanged
- GridView --> SelectedIndexChanged
- TextBox --> TextChanged
Ma come facciamo a specificare quale sarà l'evento di default di un nostro UserControl?
Lo si fà usando l'attributo DefaultEventAttribute e specificandolo nella classe del nostro UserControl nel seguente modo:
[DefaultEventAttribute("Tick")]public class Timer : Control
{[...]
}
In questo modo, nel caso non venga specificato l'EventName nel trigger, l'attributo DefaultEventAttribute indicherà al trigger a quale evento agganciarsi.
92ad8c69-b890-4df7-b860-609f2d57ac99|0|.0
Tags:
ASP.NET AJAX
by Andrea
29 August 2007 20:08
In un componente COM (sviluppato in .net e utilizzato in una pagina ASP) che si occupa di decriptare alcuni messaggi, accadeva che dopo il suo utilizzo venisse generata un'eccezione di tipo CryptographicException con il messaggio "Keyset does not exist".
Ho sbattuto la testa per diverso tempo per capire dove venisse generata questa eccezzione e il perchè accadesse dopo l'utilizzo del componente (con un ritardo variabile).
Agganciandomi in Remote Debugging (come vi ho detto nel precedente post) ho avuto qualche dato in più, ed esattamente:
System.Security.Cryptography.CryptographicException was unhandled
Message="Keyset does not exist"
Source="mscorlib"
StackTrace:
at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
at System.Security.Cryptography.SafeKeyHandle._FreeHKey(IntPtr pKeyCtx)
at System.Security.Cryptography.SafeKeyHandle.ReleaseHandle()
at System.Runtime.InteropServices.SafeHandle.InternalFinalize()
at System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing)
at System.Runtime.InteropServices.SafeHandle.Finalize()
che mi ha fatto capire che fosse scatenata al passaggio del Garbage Collection per fare un pò di pulizia.
Con questi dati in più, e googlando un pò in rete ho trovato questo commento ad un post su codeproject ".NET Encryption Simplified" che dava un suggerimento per la soluzione del problema, e cioè quello di avere un KeyContainerName diverso per ogni istanza di utilizzo.
Con questa indicazione sono riuscito a risolvere il problema passando al costruttore del RSACryptoServiceProvider un CspParameters che avesse un KeyContainerName diverso ad ogni utilizzo della funzione nel seguente modo:
CspParameters param = new CspParameters();
param.KeyContainerName = "Decryption.RSACryptoServiceProvider." + Guid.NewGuid().ToString();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param);
c166257e-6cad-4039-aebc-ee24e5f9caf3|0|.0
Tags:
.NET
by Andrea
29 August 2007 19:08
Finalmente, dopo un bel pò di tentativi, sono riuscito a capire come far funzionare il Remote Debugging di Visual Studio 2005!!
Il Remote Debugging permette, come dice anche il nome, di eseguire il debug delle vostre applicazioni hostate su un'altra macchina.
La cosa è tutto sommato semplice, e le indicazioni si trovano al seguente link "Setting Up Remote Debugging" ma a me non sono bastate, e scoprirne il motivo è stato alquanto dura. :(
Googlando un pò, sono riuscito a trovare l'aiutino che cercavo leggendo questo post Remote Debugging without the Administrator Account, a Gotcha' scritto da Steven Harman.
Il punto cruciale (che non ci sarei mai arrivato da solo) è quello di avviare (nella macchina remota) il Visual Studio Remote Debuging Monitor con "Run As..." e scegliere l'utente con cui siete loggati alla mia locale (e questo utente deve avere i permessi di amministratore nella macchina di debug).
Senza questo passaggio vi continuerete a trovare con un bel errore che vi dirà che siete collegati al server di debug, ma che non avete i permessi per accedervi.
E ora buon remote debug a tutti!!
d5861d7a-22c5-4413-833b-83ca83ad023e|0|.0
Tags:
ASP .NET
by Andrea
22 August 2007 10:08
...trovarsi con un pò di commenti di spam.
Fortuna che sono mancato sono una settimana, altrimenti altro che 655 commenti di spam.
E comunque un grazie immenso alle Akismet che gli hanno bloccati quasi tutti, infatti solamente 2 sono passati. Ma 2 su 655 direi che è una media più che accettabile. ;)
Per quanto riguarda le foto della vacanza a Maiorca, vedrò presto di pubblicarne qualcuna. E comunque...vacanza stupenda!!
Technorati tags:
Akismet,
Spam
d8e35c71-86f2-468d-8b84-1b679c34f9a1|0|.0
Tags:
Sito
by Andrea
11 August 2007 18:08
Come vi avevo anticipato in questo post Ferie prenotate….destinazione Maiorca, finalmente è arrivato il momento della mia partenza per le ferie. Mai come quest'anno ne sento proprio il bisogno.
Quindi se per qualche giorno non mi sentite, sapete dove trovarmi....in spiaggia a pancia all'aria a godermi un pò di dolce non far niente :D.
Una settimana a Maiorca e un'altra settimana tutta da programmare (con magari un giorno da passare a Gardaland), e quindi ci si sente quando tornerò con la testa nel (solito) mondo reale :D.
Buone Ferie a tutti!!
Technorati tags:
Ferie,
Maiorca
42931ba4-f6ba-4706-a27f-740771c53982|0|.0
Tags:
Tempo libero
by Andrea
06 August 2007 19:08
Di recente mi hanno cambiato il nome della macchina di sviluppo (causa nuovo sistemista convinto) e ho avuto il mio bel da fare perchè i workspace del Source Control di Team Foudation Server sono collegati al nome della macchina.
Voi direte “ma che problema c’è?!”, oppure “tanto solo solo pochi path da definire”, ma il problema non è solo questo.
Nel precedente workspace avevo un file (per fortuna solo uno) in checkout non esclusivo. Non volendo ricambiare il nome della macchina per fare quel checkin ho cercato in rete un’altra possibile soluzione.
La soluzione che ho trovato è quella di usare i comandi da command-line, che potete trovare elencati a questo link Tf Command-Line Utility Commands.
Nel mio caso il comando era:
TF LOCK /LOCK:none $/PIPPOROJECT/Pippo/Web.config
/SERVER:tfs.devteam.local
/WORKSPACE:ANDREA-DOTTOR;andrea.dottor
L’unica cosa che vi consiglio di prestare attenzione è al messaggio warning che vedrete ritornato: “TF14090: Cannot unlock $/PIPPOROJECT/Pippo/Web.config. It is not currently locked in your workspace.” perchè in realta il comando è stato eseguito correttamente, sbloccandomi il file!! Non capisco il perché di questo messaggio, ma l’importante, come sempre, è che la cosa funzioni!!
Ovvio che dovrete avere i permessi per eseguire quest’azione
d913821b-d783-4888-81b2-d1d9aba0bec8|0|.0
Tags:
Microsoft
by Andrea
04 August 2007 13:08
A volte può tornar utile far girare ASP.NET Web Administrator su IIS perchè magari dovete accedervi da un'altra macchina, o perchè non vi va di vederlo girare su web server cassini.
Per fare questo si deve creare su IIS una directory virtuale che punti al path C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles, togliere il flag Anonymous Access e selezionare Windows Authentication.
Se dovete accedervi da un'altra macchina dovrete modificare il file WebAdminPage.cs presente nella cartella App_Code e commentare il blocco (che controlla che la chiamata avvenga dalla macchina locale):
if (!application.Context.Request.IsLocal) { SecurityException securityException = new SecurityException((string)HttpContext.GetGlobalResourceObject("GlobalResources", "WebAdmin_ConfigurationIsLocalOnly")); WebAdminPage.SetCurrentException(application.Context, securityException);
application.Server.Transfer("~/error.aspx");}
Vi consiglio di prestare molta attenzione nel commentare questo blocco e all'esporre all'esterno ASP.NET Web Administrator per OVVI motivi di sicurezza.
Quando ora dovrete chiamare ASP.NET Web Administrator, ricordatevi di passare in querystring i parametri applicationPhysicalPath e applicationUrl ed il gioco è fatto.

L'indirizzo da chiamare ora, sarà:
http://localhost/ASP.NETWebAdminFiles/default.aspx?applicationPhysicalPath=C:\MioProgetto&applicationUrl=MioProgetto
Se vi state chiedendo il perchè ho portato il tutto sotto IIS è solo perchè mi ero rotto di vederlo girare sul webserver di Visual Studio che mi lascia quella fastidiosa trayicon vicino all'orologio.

8640a3d4-4766-49ba-b778-92397d664fe3|0|.0
Tags:
ASP .NET
by andrea
02 August 2007 23:08
Questa me la devo proprio segnare perchè so già che mi tornerà presto utile.
Per conoscere la versione di SQL Server installata è sufficiente eseguire questa Query:
SELECT @@version,
SERVERPROPERTY('productversion'),
SERVERPROPERTY ('productlevel'),
SERVERPROPERTY ('edition')
e otterete dei dati simili ai seguenti:
Version: Microsoft SQL Server 2005 - 9.00.2050.00 (Intel X86) Feb 13 2007 23:02:48 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
ProductVersion: 9.00.2050.00
ProductLevel: SP1
Edition: Standard Edition
Fonte: How to identify your SQL Server version and edition
Technorati tags: SQL Server
by Andrea
02 August 2007 23:08
Ecco una definizione di "Amore" che trovo stupenda, anche se credo la si impari solo col tempo, crescendo, maturando...
L'amore è rispetto per l'altro, per le sue scelte, qualunque esse siano.
Frase tratta dal libro
"Per vivere con le persone gelose" di Valerio Albisetti
by Andrea
02 August 2007 22:08
Dovete/volete iniziare a conoscere SQL Server 2005 Reporting Services ma non sapete da dove cominciare?
Un buon inizio sono i Books Online, che potete trovare a questo link:
SQL Server 2005 Books Online - Reporting Services
Cavoli….mi senbra quasi uno slogan commerciale 