Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

giovedì 22 dicembre 2005

Precompilazione in ASP.NET 2.0

Volevo farmi chiarezza sulle modalità di precompilazione disponibili in asp.net 2.0, ho fatto qualche esperimento e mi sono scritto questo promemoria, sicuro che potrà essere utile a molti : 

 

1)       Precompilazione “in-place” : aspnet_compiler.exe –v /MySite

 

Compilo tutta la mia applicazione web che si trova nella virtual directory di nome /MySite.

Vengono creati tutti gli assembly per ciascuna cartella con risorse compilabili e vengono messi in

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ MySite \...

 

            La virtual directory della mia applicazione deve contenere tutti i file, sorgenti .cs compresi.

 

            Tramite lo switch –p posso recupare il sito tramite il percorso fisico.

 

2)       Precompilazione “updatable”: aspnet_compiler.exe –u –v /MySite <deploy directory>

 

Nella <deploy directory> copia tutte le risorse statiche(html, css, images, …) e tutte le risorse che non siano codice sorgente.

Inoltre crea una cartella \bin che contiene gli assembly risultanti dalla compilazione.

 

In pratica questa è la soluzione stile VS2003 dove tutto il codice “behind” veniva compilato in un unico assembly messo nella \bin, con la differenza che qui gli assembly creati sono uno per ogni sottocartella compilabile.

 

Questa cartella è pronta per essere copiata cosi sul server web di produzione e ho la possibilità di fare al volo le modifiche ai file aspx e ascx senza dover più ricompilare.

 

Anche in questo caso, una volta installata sul server di produzione, posso rieseguire il comando come nel punto 1 per poter precompilare il tutto, aspx e ascx compresi.

 

3)       Precompilazione “non updatable”: aspnet_compiler.exe –v /MySite <deploy directory>

 

Questa modalità funziona come quella updatable con la sostanziale differenza che tutti i file aspx e ascx vengono copiati nella cartella di deploy vuoti.

Inoltre anche il file .skin dei temi non vengono copiati in quanto sono già creati come codice negli assembly.

 

Questa è la compilazione più protetta in quanto una volta eseguita non c’e’ modo di cambiare nulla sull’applicazione, se non a livello di web.config e/o immagini/stili.

 

 

     Comunque per gestire al meglio il tutto e tramite una UI che non sia la console del dos, c’e’ disponibile per il download

     il Web Deployment Project, con la relativa ed esaustiva documentazione.

 

 

 

Membership/Roles su sql express o sql server 2005...

Ho fatto un po di esperimenti per capire come utilizzare le membership users e roles sia su database sql express che sql server 2005.

1) Voglio utilizzare un database Sql Express, lo chiamo MyDatabase.mdf e voglio gestire utenti e ruoli tramite lo schema ed i provider di default di asp.net 2.0:

  • apro il web.config e imposto la nuova stringa di connessione

    <connectionStrings>
      <
remove name="LocalSqlServer" />
      <
add name="LocalSqlServer"
          
connectionString="data source=.\SQLEXPRESS;Integrated             
                                  Security=SSPI;AttachDBFilename=|DataDirectory|MyDatabase.mdf;User Instance=true
" 
          
providerName="System.Data.SqlClient" />
   connectionStrings>

 
Se guardate nel machine.config infatti vedrete che la chiave impostata per la stringa di connessione di default 
  è proprio LocalSqlServer e viene utilizzata nelle dichiarazioni dei provider di Membership e Roles.

  • apro il WSAT(Web Site Administration Tool)
  • clicco su security
  • in automatico viene creata la cartella app_data ed al suo interno il database MyDatabase.mdf, con già comprese tutte le tabelle e le stored procedure per gestire roles e membership users.
  • posso quindi procedere con il wizard alla configurazione della sicurezza, creando gli utenti, i ruoli e le autorizzazioni alle varie cartelle del sito.

 

2) Voglio utilizzare un database su Sql Server 2005, lo chiamo MyDatabase.mdf e voglio gestire utenti e ruoli tramite lo schema ed i provider di default di asp.net 2.0:

  • apro il web.config e imposto la nuova stringa di connessione

    <connectionStrings>
      <
remove name="LocalSqlServer" />
      <
add name="LocalSqlServer"
          
connectionString="Data Source=MYSERVER;Integrated  
                                  Security=SSPI;Initial Catalog=MyDatabase
" 
          
providerName="System.Data.SqlClient" />
   connectionStrings>

  • lancio aspnet_regsql.exe(in C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727) il quale mi consente di creare o aggiornare un database con le tabelle e le stored procedure per gestire users e ruoli nel modo previsto da providers di default di asp.net 2.0
  • a questo punto posso configurare utenti e ruoli attraverso il WSAT.

Ovviamente se volessi utilizzare i mie provider custom per le membership di users e ruoli, il tutto resta invariato se non per il fatto che nel web.config, oppure sempre attraverso il WSAT, devo configurare i miei nuovi providers.

Inoltre posso usare aspnet_regsql.exe anche per creare dei database sotto sql express.In questo caso nel tool basterà specificare l'instanza .\SQLEXPRESS ed il nome del database.

Unica nota negativa è che l'utilizzo di WSAT provoca il problema della perdita dell'uso dell'intellisense nel web.config(a causa del namespace xmlns=http://schemas.microsoft.com/.NetConfiguration/v2.0  che applica sulla root di configuration) e che non mantiene alcune indentazioni...

 

 

Copyright © Luca Mauri