Due giorni pieni di emozioni

by Andrea 01 October 2010 08:25

Ebbene si…sono e saranno due giorni pieni di emozioni…

MVP_logoOggi, 1 Ottobre 2010 ho ricevuto la mail che mi notifica di aver ricevuto il premio Microsoft MVP Award per l’anno 2010 per la categoria ASP.NET!! E’ il terzo anno che ricevo questo premio, ed ogni volta le emozioni sono sempre uniche, come la prima volta…
Un grazie va a tutti voi, che siete presenti nei vari meeting che tengo, a voi che leggete i miei post, e a tutti quelli che chiedendomi qualche consiglio/aiuto…sappiate che è anche grazie a voi che coltivo questa passione verso il mondo .NET, verso le community e specialmente verso la condivisione di quelle (poche cose) che so.
Un grazie va anche a Alead, che riesce a portare/guidare il programma MVP come pochi saprebbero fare.
Infine, un grazie va ai compagni di merende e di gioco, Davide Vernole, Andrea Boschin e Davide Senatore…che da diversi anni mi stanno aiutando a crescere e a migliorare sempre più. GRAZIE DAVVERO!!

 

WeddingRingDomani, 2 Ottobre 2010 alle ore 11.00, sarò di fronte all’altare a fare un passo importante…mi sposerò con Maria Elena, e da domani inizierò una nuova ed importante fase della mia vita.

Se non mi vedete bazziccare nei forum, o scrivere nuovi post in questo blog, o non sarò presente al prossimo community meeting di XeDotNet... sappiate che starò godendomi il viaggio di nozze in qualche isoletta sperduta dell’indonesia... al caldo... sotto il sole...
se volete venirmi a cercare... Bali, Gili.

E con questo post, vi saluto e ringrazio tutti...è giunta l’ora di mettere via il pc...
torneremo a risentirci dopo il 20 di ottobre!

Technorati Tags: ,,

Tags:

ASP .NET | .NET | Generale | Microsoft | Pensieri

Fix per ASP.NET Security Vulnerability

by Andrea 28 September 2010 00:15

In un post precendente (Importante: ASP.NET Security Vulnerability) vi avevo segnalato di una grave vulnerabilità presente nelle applicazioni ASP.NET.

Oggi Scott Guthrie ha pubblicato il post ASP.NET Security Update Shipping Tuesday, segnalando che a partire da oggi (Tuesday, September 28, 2010 at 1:00 PM PDT) sarà disponibile un update ufficiale per risolvere la vulnerabilità riscontrata. Tale fix arriverà anche tramite Windows Update.

[UPDATE 29.09.2010]
Trovate i link a tutti ai download per le varie versioni del .NET Framework in questo post:
ASP.NET Security Update Now Available

Tags: ,

ASP .NET | .NET | Microsoft

Importante: ASP.NET Security Vulnerability

by Andrea 20 September 2010 01:58

E' stata riscontrata una vulnerabilità in ASP.NET che, se utilizzata, riuscirebbe a far scaricare qualsiasi file presente nell'applicazione, compreso il Web.config, e quindi permetterebbe ad un malintenzionato di venire in possesso di informazioni sensibili.

La vulnerabilità è stata riscontrata anche da Microsoft il 17 settembre 2010, che è già al lavoro per una possibile patch. Microsoft Security Advisory (2416728)

Al momento, è possibile applicare un workaround per tamponare il problema, in attesa della patch.
Le modifiche da eseguire, e maggiori informazioni a riguardo, le potete trovate nel post
"Important: ASP.NET Security Vulnerability", presente nel blog di Scott Guthrie.

Il workaround consiste nell'abilitare la sezione customErrors nel web.config e far puntare ogni errore che avvenga ad una specifica pagina (di errore) all'interno dell'applicazione.
E' importante che gli errori puntino alla stessa pagina di errore, e che quindi venga ritornato sempre lo stesso contenuto e lo stesso codice di errore per ogni errore che avvenga.

E' importante che vengano applicate le modifiche.

Tags: ,

ASP .NET | .NET | Microsoft

Codice e slide della sessione Sfruttare al meglio ASP.NET WebForm ed ASP.NET MVC

by Andrea 15 September 2010 03:30

Ecco disponibili al download, il codice e le slide del XeDotNet community meeting che ho tenuto il 10 settembre 2010 dal titolo "Sfruttare al meglio ASP.NET WebForm ed ASP.NET MVC".

  • Codice: http://blog.dottor.net/files/xedotnet/XeDotNet.Dottor.MVC-WebForm_code.zip
  • Slide: http://blog.dottor.net/files/xedotnet/XeDotNet.Dottor.MVC-WebForm_slide.zip

    Dopo l'introduzione di ASP.NET MVC all'interno del .NET framework, è utile fare un pò di chiarezza, in modo da capire quando sia più efficace l'uso di ASP.NET MVC rispetto ad ASP.NET WebForm, e viceversa.
    In questa sessione andremo in dettaglio sulle potenzialità di entrambe le tecnologie per comprendere a pieno i casi d'utilizzo, ed i vantaggi che si possono ottenere da una corretta scelta.

  • Tags: , , ,

    ASP .NET | .NET | XeDotNet

    Come modificare il tool per compare e merge in Visual Studio

    by Andrea 15 September 2010 02:53

    In questi giorni stò provando alcuni tool per comparazione e merge di file, in cerca di un tool che sia migliore di quello presente in Team Foundation (Visual Studio)...e la ricerca non è affatto semplice.

    Al momento stò provando con KDiff3, un tool gratuito che supporta il confronto a 3 vie.

    Per specificare il tool in Visual Studio, è necessario andare in
    tools -> options -> source control -> visual studio team foundation server -> "configure user tools"
    e specificare il comando di apertura (path dell'eseguibile del tool), se usato per diff o merge, e le estensioni dei file che verranno gestiti dal tool (.* per tutti i file).

    Per un corretto funzionamento/integrazione è necessario configurare correttamente le impostazioni che permetto a Visual Studio di comunicare esattamente i path e i nomi dei file in questione.
    Cercando in rete ho trovato un post che raggruppa queste configurazioni a seconda dei diversi tools: diff/merge configuration in Team Foundation - common Command and Argument values

    Riporto qui (cut & paste) le configurazioni presenti nel post:

    Compare tools:

    Product Command Arguments
    TFS default diffmerge.exe %1 %2 %6 %7 %5 /ignorespace
    WinDiff windiff.exe %1 %2
    DiffDoc
    (for Word files)
    DiffDoc.exe /M%1 /S%2
    WinMerge winmerge.exe /ub /dl %6 /dr %7 %1 %2
    Beyond Compare bc2.exe %1 %2 /title1=%6 /title2=%7
    KDiff3 kdiff3.exe %1 --fname %6 %2 --fname %7
    Araxis compare.exe /wait /2 /title1:%6 /title2:%7 %1 %2
    Compare It! Wincmp3.exe %1 /=%6 %2 /=%7
    SourceGear
    DiffMerge
    DiffMerge.exe /title1=%6 /title2=%7 %1 %2
    Beyond Compare 3 BComp.exe %1 %2 /title1=%6 /title2=%7
    TortoiseMerge TortoiseMerge.exe /base:%1 /mine:%2 /basename:%6 /minename:%7
    Visual SlickEdit win\vsdiff.exe %1 %2

    Merge tools:

    Product Command Arguments
    TFS default diffmerge.exe /merge %1 %2 %3 %4 %6 %7
    KDiff3 kdiff3.exe %3 --fname %8 %2 --fname %7 %1 --fname %6 -o %4
    Visual SourceSafe ssexp.exe /merge %1 %2 %3 %4 %6 %7
    Araxis compare.exe /wait /swap /a3 /3 /title1:%6 /title2:%7 /title3:%8 %1 %2 %3 %4
    Beyond Compare
    (2-way merge)
    bc2.exe %1 %2 /savetarget=%4 /title1=%6 /title2=%7
    WinMerge
    (2-way merge)
    winmerge.exe /ub /dl %6 /dr %7 %1 %2 %4
    Guiffy guiffy.exe -s -h1%6 -h2%7 -hm%9 %1 %2 %3 %4
    Ellie Computing guimerge.exe --mode=merge3 %3 %1 %2 --to=%4 --title0=%8 --title1=%6 --title2=%7 --to-title=%9
    SourceGear
    DiffMerge
    DiffMerge.exe /title1=%6 /title2=%8 /title3=%7 /result=%4 %1 %3 %2
    Beyond Compare 3 BComp.exe %1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9
    TortoiseMerge TortoiseMerge.exe

    /base:%3 /mine:%2 /theirs:%1 /basename:%8 /minename:%7 /theirsname:%6 /merged:%4 /mergedname:%9

    Visual SlickEdit win\vsmerge.exe %3 %1 %2 %4

    UPDATE:

    Tags:

    .NET | Microsoft

    ASP.NET 4.0 e cambiamenti nella Code Access Security

    by Andrea 08 June 2010 06:17

    In ASP.NET 4.0 sono stati apportati dei cambiamenti a livello di Code Access Security (CAS ).
    Questi cambiamenti sono necessari ad apportare maggiore sicurezza e controllo nell'esecuzione delle applicazioni. Di default, la configurazione della CAS di ASP.NET 4.0 è più restrittiva rispetto alle versioni precedenti, e questo può essere causa di eccezzioni nel caso applicazioni esistenti (che utilizzano versioni precedenti del framework) vengano pubblicate su hosting con la versione 4.0 del framework.

    Nel mio caso mi sono ritrovato con la seguente eccezzione:

    System.TypeInitializationException:
    The type initializer for 'PingFM.PingFMApi' threw an exception.
    ---> System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
    at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
    at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) at System.Security.CodeAccessPermission.Demand()
    at System.Reflection.RuntimeAssembly.VerifyCodeBaseDiscovery(String codeBase)
    at System.Reflection.RuntimeAssembly.GetName(Boolean copiedName)
    at System.Reflection.Assembly.GetName()
    at PingFM.PingFMApi..cctor()
    --- End of inner exception stack trace ---
    at BlogEngineToPingFm.Ping(Post item, Uri itemUrl, ExtensionSettings settings)

    Una possibile soluzione è modificare la configurazione dell'applicazione, in modo che la CAS abbia lo stesso comportemento delle precedenti versioni di ASP.NET.
    Per fare ciò, nel file web.config sarà necessario valorizzare l'attributo legacyCasModel a True, presente nell'elemento trust. (Prestate attenzione al livello di trust che andate ad utilizzare)

    <system.web>
        <trust level="Medium" legacyCasModel="true" />
    </system.web>

    Per maggiori informazioni sull'argomento, cosiglio la lettura dei seguenti link:
    Code Access Security in ASP.NET 4 Applications 
    What is New in ASP.NET 4.0 Code Access Security
    Changes to the ASP.NET Code Access Security (CAS) Implementation

    Tags:

    .NET | ASP .NET

    Community Tour 2010 - codice e slide sessione ASP.NET 4.0

    by Andrea 20 April 2010 02:16

    Ecco disponibili al download codice e slide della sessione What's new in ASP.NET 4.0 che ho tenuto al Visual Studio 2010 Community Launch che si è tenuto il 15 Aprile 2010 a Marghera Venezia.

  • Codice: http://files.dottor.net/xedotnet/CommunityTour2010.Dottor.ASPNET40_code.zip
  • Slide: http://files.dottor.net/xedotnet/CommunityTour2010.Dottor.ASPNET40_slide.zip
  • Il Microsoft .NET Framework è in continua evoluzione ed ha raggiunto la versione 4.0 accompagnato da moltissime novità. In questa sessione andremo in dettaglio per ciò che riguarda l'ultima versione di ASP.NET 4.0, ponendo il focus sulle nuove funzionalità e sui cambiamenti più importanti. Con esempi pratici vedremo come questa nuova versione agevolerà lo sviluppatore nel realizzare le proprie applicazioni. Maggiore controllo del codice prodotto, SEO, nuovi template project, Script Loader, Client Data Access e migliorie ai controlli esistenti, sono solo alcuni degli argomenti che verranno trattati.

    Tags: , ,

    .NET | ASP .NET | Microsoft | XeDotNet

    Codice e slide della sessione ASP.NET MVC 2.0

    by Andrea 12 April 2010 02:27

    Ecco disponibili al download, il codice e le slide dell'evento che ho tenuto il 9 Aprile 2010 su Microsoft ASP.NET MVC 2.0.

    Per chi non avesse partecipato al community meeting, nel codice è presente una semplice ma completa applicazione, (ovviamente) realizzata in ASP.NET MVC 2.0, che permette la gestione e visualizzazione di news:

    • Pannello di controllo (utenti autenticati),
    • Inserimento, Modifica, Cancellazione News (utenti autenticati)
    • Visualizzazione lista news
    • Visualizzazione dettaglio news
    • Inserimento commenti nel dettaglio news

     

    Tags: , , ,

    .NET | ASP .NET | Microsoft | XeDotNet

    Community Tour - Visual Studio 2010

    by Andrea 07 April 2010 03:33

    Giovedì 15 Aprile 2010 si terrà l'evento Community Tour - Visual Studio 2010, per il lancio della nuova versione di Visual Studio.
    Il luogo dell'evento sarà:

    Hotel Holiday Inn Venice
    Rotonda Romea 1/2 
    30175 Marghera (VE)

    e ci terremo compagnia per un'intera giornata, piena zeppa di interessanti sessioni, che ci vedranno impegnati dalle 9.30 alle 18.15 con la seguente agenda:

    • 09:00 - Registrazione
    • 09:30 - Apertura Lavori e Keynote con Vittorio Bertocci
    • 10:20 - Vittorio Bertocci - Claims-based identity e Windows Identity Foundation
    • 11:25 - Sospensione
    • 11:40 - Davide Vernole - Microsoft Test Manager, mai più senza!
    • 12:45 - Lorenzo Barbieri - Introduzione allo sviluppo con Windows Phone 7 Series
    • 13:45 - Pausa Pranzo (a carico dei convenuti)
    • 14:45 - Andrea Boschin - Silverlight 4.0 Overview
    • 15:50 - Andrea Dottor - What's new in ASP.NET 4.0
    • 17:10 - Davide Senatore - WPF 4.0 – The Golden Age of Windows Client
    • 18:15 - Chiusura lavori

    Agenda completa e abstract: Community Tour Visual Studio 2010
    Registrazione: clicca qui

    Vi aspettiamo numerosi!!

    Tags: , , ,

    XeDotNet | Microsoft | .NET | ASP .NET

    Avviare un package di SSIS da un'applicazione ASP.NET

    by Andrea 29 March 2010 07:22

    SSIS Non so come mai, ma utlimamente mi scontro con problematiche non molto documentate. Una di queste è la possibilità di lanciare l'esecuzione di Package di SQL Server Integration Services da un'applicazione ASP.NET.

    Cercando in rete, ho trovato solamente due possibili soluzioni, entrambe elencate in questo post. Una soluzione richiede la chiamata ad un job di SQL Server Agent, mentre l'altra soluzione fa uso di un Web Service da pubblicare nella macchina di SQL Server.

    La prima soluzione l'ho scartata in quanto non sono riuscito a trovare il metodo per poter passare dei parametri utili a valorizzare le variabili del package (mia ignoranza). Mentre la seconda richiede di installare un'ulteriore applicazione (da dover poi mantenere e ripubblicare), nella macchina di SQL Server, e quindi anche questa scartata.
    Può sembrare banale, ma avere un'applicazione in più da mantenere non è sempre semplice, specialmente nel caso l'applicazione sia distribuita in diversi server, e sia presente in casa di diversi clienti.

    Guardando le diverse soluzioni, mi è venuta l'idea di provare a adattare la soluzione del Web Service, ma eseguita direttamente da un server remoto. Devo ammettere che ci sono state svariate problematiche, ma alla fine, sono arrivato ad una soluzione perfettamente funzionante.

    Ecco come eseguire un package di SSIS da remoto:

    Per l'esecuzione del package sarà necessario creare un utente nel database (oppure utilizzarne uno di esistente) ed assegnargli il ruolo db_dtsoperator nel database msdb. Questo ruolo attribuisce all'utente i permessi di:

    • Enumerate all packages.
    • View all packages.
    • Execute all packages.
    • Export all packages.
    • Execute all packages in SQL Server Agent.

    Per quanto rigurda la connessione verso il database, nel web.config ho creato una ConnectionString che contiene solamente "Data Source", "User ID" e "Password", questo perchè poi tramite l'uso della classe DbConnectionStringBuilder, verrà poi parsata per recuperarne i singoli valori. Così ho un unico punto dove saranno contenute le credenziali di accesso.

       1: <add 
       2:   name="olapServerAuth"
       3:   connectionString="Data Source=192.168.0.100;User ID=usr;Password=p4$$w0rd;" 
       4:   providerName="System.Data.EntityClient" />

    Nell'applicazione sarà necessario referenziare la dll Microsoft.SQLServer.ManagedDTS, e aggiungere alla classe uno using a Microsoft.SqlServer.Dts.Runtime.

    Il codice per eseguire il package da remoto sarà il seguente:

       1: // recupero delle informazioni per l'autenticazione al server
       2: DbConnectionStringBuilder cs = new DbConnectionStringBuilder();
       3: cs.ConnectionString = ConfigurationManager.ConnectionStrings["olapServerAuth"].ConnectionString;
       4:  
       5: Application integrationServices = new Application();
       6: // recupero del package che deve essere presente in SQL Server
       7: Package package = integrationServices.LoadFromSqlServer(
       8:                         @"\Data Collector\Test\TestETL",
       9:                         cs["Data Source"] as string,
      10:                         cs["User ID"] as string,
      11:                         cs["Password"] as string,
      12:                         null);
      13:  
      14: // set delle variabili
      15: Variables variables = package.Variables;
      16: variables["VariabileDaSettare"].Value = valoreDaSettare;
      17:  
      18: // set delle connessioni
      19: Connections connections = package.Connections;
      20: connections["AdoNetAnalysisDatabase"].ConnectionString = ConfigurationManager.ConnectionStrings["AdoNetAnalysisDatabase"].ConnectionString;
      21:  
      22: // esecuzione del package
      23: DTSExecResult result = package.Execute(connections, variables, null, null, null);
      24: if (result != DTSExecResult.Success)
      25:     ... // errore nell'esecuzione
      26: else
      27:     ... // avvio corretto del package

    Da notare che:

    • DbConnectionStringBuilder: permette di recuperare ogni singolo elemento che compone una ConnectionString. Utile in questo caso per salvare i dati del server di SQL Server, il nome dell'utente di accesso, e la relativa password in un unico container, e poterli poi recuperare singolarmente.
    • Application.LoadFromSqlServer: permette di recuperare un package presente in SQL Server. Se i campi username e password non vengono valorizzati, viene fatto uso della windows authentication.
    • package.Variables: recupero delle variabili utilizzate nel package. Utile nel caso sia necessario modificarne il valore di default prima dell'esecuzione.
    • package.Connections: recupero delle connessioni utilizzate nel package. Da notare che oltre alle stringhe di connessione, compaiono in questa lista anche le connessioni per i Flat File.
      In questi elementi devono essere presenti tutti i valori richiesti, come ad esempio nel caso di una connessione OLEDB dovranno essere presenti: Provider, Application Name e Auto Translate. (per facilità controllate come sono composte nel vostro package).
    • package.Execute: avvia l'esecuzione del package con le nuove variabili e connessioni impostate. 
    • In caso di non successo nell'esecuzione del package, in package.Errors saranno presenti gli errori.

    Devo ammettere che ricostruire questo codice non è stato per niente facile, in quanto gli errori che mi si presentavano non erano proprio semplici da decifrare.
    La maggiore difficoltà è stata nel capire che le connessioni dovevano riportare tutti i parametri (gli stessi che si possono vedere quando si esegue il package dal SQL Management Studio), ed infine anche il capire quali fossero i permessi minimi da dover dare all'utente per poter eseguire il tutto (per evitare problematiche di sicurezza).
    Ma alla fine, tutto ha funzionato alla perfezione, e questo ripaga del tempo speso/investito in questa soluzione.

    Tags: ,

    SQL Server | ASP .NET | .NET