Home    Novità    Ricerca   In offerta   Consigliati   Prossimi arrivi   Bestsellers   Software    CBT  
P.Iva 01029770490   [Ordini telefonici 0586 210919]  Ordini rapidi 
Ricerca Veloce   per Titolo o ISBN  [Mailing delle novità]   [Servizio di CallBack]  
  Argomenti 

  Applicazioni
  CAD
  Certificazione e formazione
  Commercio elettronico
  Cultura Informatica
  Database
  Dizionari
  Elettronica
  Enterprise
  Grafica
  Hardware
  Internet
  Legislazione informatica
  Multimedia
  Progettazione WEB
  Programmazione
  Reti e telecomunicazioni
  Sicurezza
  Sistemi operativi
  Tecnologia e societa'
  Universita' e ricerca
InternetProgrammazione internetActive Server Pages

 CONSIGLIATO DA LIBRINFORMATICA

Programmare ASP.NET 2.0
EditoreMondadori Informatica
AutoreEsposito Dino
Titolo originaleProgramming Microsoft ASP . NET 2.0 Core reference
Editore originaleMicrosoft Press
CollanaProgramming series
Pagine754
Volumi1
LivelloAvanzato
LinguaItaliano
Data pubblicazione02 - 2006
ISBN8804541369


 Prezzo di copertina 
 Euro 70,00  

 Presentazione       Indice      

Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

Parte I Realizzare una pagina ASP.NET

Capitolo 1 Il modello di programmazione ASP.NET. . . . . . . . . . . . . . . . . . . . . 3
Cos’è ASP.NET, in definitiva? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
La programmazione nell’era delle Web Forms . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Programmazione a eventi su HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Il protocollo HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Struttura di una pagina ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Il modello a componenti ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Un modello di interazione del componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
L’attributo runat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Controlli Server ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Lo stack di sviluppo ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Lo strato di Presentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Il framework della pagina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
L’ambiente di runtime HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Il modello di provider ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
La motivazione alla base del modello di provider . . . . . . . . . . . . . . . . . . . . . . . 27
Una rapida panoramica all’implementazione di ASP.NET . . . . . . . . . . . . . . . . . 30
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Capitolo 2 Sviluppo Web in Microsoft Visual Studio .NET 2005 . . . . . . . . . . . 37
Introduzione a Visual Studio .NET 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
I crucci comuni di Visual Studio .NET 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
I punti di forza di Visual Studio .NET 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Creare un progetto ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Caratteristiche di progettazione della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Aggiungere codice al progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Cartelle riservate ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Build del progetto ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Deployment dell’applicazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Deployment XCopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Precompilazione del sito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Amministrazione di una applicazione ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Il Web Site Administration Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Modifica dei file di configurazione ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Capitolo 3 Anatomia di una pagina ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . 79
Invocazione di una pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Il meccanismo del runtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Elaborazione della richiesta. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Le direttive di elaborazione di una pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
La classe Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Proprietà della classe Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Metodi della classe Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Eventi della classe Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Il modello degli eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Il ciclo di vita della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Setup della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Gestione del postback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Finalizzazione della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Capitolo 4 Principali controlli server ASP.NET . . . . . . . . . . . . . . . . . . . . . . 119
Generalità sui controlli server ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Proprietà della classe Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Metodi della classe Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Eventi della classe Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Nuove Caratteristiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Controlli HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Generalità sui controlli HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Controlli container HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Controlli di input HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Il controllo HtmlImage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Controlli Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Generalità sui controlli Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Principali controlli Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Controlli Web di miscellanea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Controlli di validazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Generalità sui controlli di validazione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Galleria dei controlli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Funzionalità speciali. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Capitolo 5 Lavorare con la pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Programmazione con i form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
La classe HtmlForm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Form multipli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Posting cross-page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Gestire gli errori di pagina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Elementi di gestione degli errori. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Mappatura tra errori e pagine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Tracing in ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Tracing del flusso di esecuzione in ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . 197
Scrittura dei messaggi di trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Il Trace Viewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Personalizzazione della pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Creazione del profilo utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Interagire con la pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Provider di profilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

Capitolo 6 Una sofisticata composizione di pagina . . . . . . . . . . . . . . . . . . . 219
Lavorare con le pagine master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Creazione di pagine sofisticate in ASP.NET 1.x . . . . . . . . . . . . . . . . . . . . . . . 220
Scrittura di una pagina master. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Scrittura di una pagina content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Elaborazione di pagine master e content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Programmazione della pagina master . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . 233
Lavorare con i temi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Capire i temi ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Pagine e controlli a tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Temi al lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Lavorare con i wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Una panoramica del controllo Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Aggiunta di passi a un Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Navigazione nel Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Parte II Aggiunta di dati in un sito ASP.NET

Capitolo 7 I data provider ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Infrastruttura .NET di accesso ai dati. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Managed Data Provider .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Datasource a cui si accede attraverso ADO.NET . . . . . . . . . . . . . . . . . . . . . . . 268
Il modello Provider Factory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Connessione ai datasource. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
La classe SqlConnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Stringhe di connessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Pooling delle connessioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Esecuzione di comandi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
La classe SqlCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Data Reader ADO.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Comandi asincroni . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Lavorare con le transazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Miglioramenti specifici a SQL Server 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Capitolo 8 Container di dati ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Data Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
La classe SqlDataAdapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Il meccanismo di mappatura delle tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Come funziona l’operazione di batch update . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Oggetti data container in memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
L’oggetto DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
L’oggetto DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Relazioni tra i dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
L’oggetto DataView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

Capitolo 9 Il modello di data-binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Data binding basato su datasource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Datasource ammissibili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Proprietà di data-binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Controlli list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Controlli iterativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Espressioni di data-binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Data Binding semplice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
La classe DataBinder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Altri metodi di data-binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Componenti datasource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Panoramica dei componenti datasource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
All’interno dei controlli datasource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Il controllo SqlDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
La classe AccessDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Il controllo ObjectDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
La classe SiteMapDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
La classe XmlDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

Capitolo 10 Creazione di griglie di dati collegabili . . . . . . . . . . . . . . . . . . 413
Il controllo DataGrid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Il modello a oggetti del DataGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Collegamento dei dati alla griglia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Lavorare con il DataGrid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Il controllo GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Il modello a oggetti del controllo GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Collegamento di dati a un controllo GridView . . . . . . . . . . . . . . . . . . . . . . . . . 433
Paginazione dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Ordinamento dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Editing dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Funzionalità avanzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

Capitolo 11 Gestione delle viste di un record . . . . . . . . . . . . . . . . . . . . . . . . 467
Il controllo DetailsView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Il modello a oggetti DetailsView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Collegamento di dati a un controllo DetailsView . . . . . . . . . . . . . . . . . . . . . . . 474
Creazione di viste master/detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Lavorare con i dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Il controllo FormView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Il modello a oggetti FormView . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 489
Collegamento dei dati a un controllo FormView . . . . . . . . . . . . . . . . . . . . . . . 491
Editing dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
ConclusionI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

Parte III Infrastruttura ASP.NET

Capitolo 12 Il contesto della richiesta HTTP . . . . . . . . . . . . . . . . . . . . . . . . 501
Inizializzazione dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Proprietà della classe HttpApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Moduli dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Metodi della classe HttpApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Eventi della classe HttpApplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Il file global.asax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Compilazione di global.asax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Sintassi del file global.asax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Tracciamento di errori e anomalie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
La classe HttpContext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Proprietà della classe HttpContext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Metodi della classe HttpContext. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
L’oggetto Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Proprietà della classe HttpServerUtility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Metodi della classe HttpServerUtility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
L’oggetto HttpResponse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Proprietà della classe HttpResponse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Metodi della classe HttpResponse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
L’oggetto HttpRequest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Proprietà della classe HttpRequest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Metodi della classe HttpRequest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

Capitolo 13 Gestione dello stato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Lo stato dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Proprietà della classe HttpApplicationState . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Metodi della classe HttpApplicationState . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
Sincronizzazione dello stato. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Compromessi dello stato dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
Lo stato della sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Il modulo HTTP di stato della sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Proprietà della classe HttpSessionState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Metodi della classe HttpSessionState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Lavorare con lo stato della sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Identificazione di una sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Durata di una sessione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Persistere dati di sessione su server remoti . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Persistere dati di sessione su SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Personalizzare la gestione dello stato della sessione . . . . . . . . . . . . . . . . . . . . . . 567
Realizzare un provider custom di stato della sessione . . . . . . . . . . . . . . . . . 568
Generazione di un ID custom di sessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Il ViewState di una pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
La classe StateBag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
Problemi comuni con ViewState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Programmazione Web Forms senza ViewState . . . . . . . . . . . . . . . . . . . . . . . 578
Modifiche al ViewState in the ASP.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Mantenere il ViewState sul server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

Capitolo 14 Il caching in ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
Caching dei dati dell’applicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
La classe Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Lavorare con l’oggetto Cache ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Aspetti pratici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Progettazione di una dipendenza custom . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Una dipendenza dalla cache per dati XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Dipendenza dalla cache e SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
Caching di pagine ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
La direttiva @OutputCache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
La classe HttpCachePolicy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Caching di versioni multiple di una pagina . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
Caching di porzioni di pagine ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Caratteristiche avanzate in ASP.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

Capitolo 15 Sicurezza in ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
Da dove provengono le minacce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Il contesto di sicurezza di ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
Chi esegue realmente la mia applicazione ASP.NET? . . . .. . . . . . . . . . . . . . . . 649
Modifica dell’identità del processo ASP.NET . . . . . . . . . .. . . . . . . . . . . . . . . . 652
Il livello di trust delle applicazioni ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Metodi di autenticazione ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Utilizzo dell’autenticazione Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
Flusso di controllo dell’autenticazione Forms . . . . . . . . . . . . . . . . . . . . . . . . . 661
La classe FormsAuthentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Configurazione dell’autenticazione Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Caratteristiche avanzate dell’autenticazione Forms . . . . . . . . . . . . . . . . . . . . 671
L’API di membership e di gestione dei ruoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
La classe Membership. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
Il provider di membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Gestione dei ruoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
Controlli inerenti alla sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Il controllo Login. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Il controllo LoginName. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Il controllo LoginStatus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Il controllo LoginView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
Il controllo PasswordRecovery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Il controllo ChangePassword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Il controllo CreateUserWizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705


  Login 

  Non ricordo la password
  Nuovo account
  Cliente 

  Il carrello

 Carrello 

  Informazioni 

  Contatti
  Qualità del servizio
  Costi e tempi di consegna
  Modalità di pagamento
  Prezzi
  Sconti
  Privacy