AsyncPostbackTrigger, EventName ed Evento di default

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.

Tags:

ASP.NET AJAX

CryptographicException, Keyset does not exist

by Andrea 29 August 2007 20:08

bug 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);

Tags:

.NET

E il Remote Debugging finalmente mi funziona!

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!!smile_wink

Tags:

ASP .NET

Tornare a casa e...

by Andrea 22 August 2007 10:08

spam ...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: ,

Tags:

Sito

Chiuso per ferie

by Andrea 11 August 2007 18:08

Chiuso_per_ferie 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.

baleari-minorca 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: ,

Tags:

Tempo libero

TFS - Sbloccare un file in un'altro workspace

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. smile_sad

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 smile_wink

Tags:

Microsoft

ASP.NET Web Administrator su IIS

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.
smile_wink

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.
smile_teeth

Technorati tags: ,

Tags:

ASP .NET

Conoscere la versione di SQL Server

by andrea 02 August 2007 23:08

Questa me la devo proprio segnare perchè so già che mi tornerà presto utile.smile_wink
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:

Tags:

Reporting Services | SQL Server

L'Amore è...

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

Technorati tags:

Tags:

Libri | Pensieri

Reporting Services 2005, da dove cominciare

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 smile_teeth

Tags:

Reporting Services