Procedura: configurare i servizi delle applicazioni client

In questo argomento viene descritto come utilizzare Progettazione progetti di Visual Studio per attivare e configurare i servizi dell'applicazione client. È possibile utilizzare i servizi dell'applicazione client per convalidare utenti e recuperare impostazioni e ruoli utente dal servizio di un'applicazione Microsoft Ajax esistente. Al termine della configurazione sarà possibile accedere ai servizi attivati nel codice dell'applicazione come descritto in Cenni preliminari sui servizi delle applicazioni client. Per ulteriori informazioni sui servizi dell'applicazione Microsoft Ajax, vedere Cenni preliminari sui servizi delle applicazioni ASP.NET.

È possibile attivare e configurare i servizi dell'applicazione client nella pagina Servizi di Progettazione progetti. La pagina Servizi aggiorna i valori nel file App.config del progetto. Per accedere a Progettazione progetti, scegliere il comando Proprietà dal menu Progetto. Per ulteriori informazioni sulla pagina Servizi, vedere Pagina Servizi, Progettazione progetti. Per ulteriori informazioni su Progettazione progetti, vedere Introduzione a Progettazione progetti.

Nella seguente procedura viene illustrato come eseguire le configurazione di base per i servizi dell'applicazione client. Le opzioni di configurazione avanzate sono descritte nelle sezioni successive.

Per configurare i servizi dell'applicazione client

  1. Selezionare un nodo di progetto in Esplora soluzioni, quindi scegliere Proprietà dal menu Progetto.

    Verrà visualizzata la finestra Progettazione progetti.

  2. Fare clic sulla scheda Servizi. Verrà visualizzata la pagina Servizi, come illustrato nella figura seguente.

    Scheda Servizi in Progettazione progetti

  3. Nella pagina Servizi selezionare Attiva servizi applicazioni client.

    Nota

    I servizi dell'applicazione client richiedono la versione completa di .NET Framework e non sono supportati in .NET Framework Client Profile. Se la casella di controllo Attiva servizi applicazioni client è disabilitata, verificare che Versione .NET Framework di destinazione sia impostato su .NET Framework 3.5 o versioni successive. Per visualizzare l'impostazione Versione .NET Framework di destinazione in C#, aprire Creazione di progetti, quindi fare clic sulla pagina Applicazione. Per visualizzare l'impostazione Versione .NET Framework di destinazione in Visual Basic, aprire Progettazione progetti, fare clic sulla pagina Compila, quindi fare clic su Opzioni di compilazione avanzate.

  4. Selezionare Usa autenticazione basata su form se si intende fornire la finestra di dialogo o i controlli di accesso personalizzati. Altrimenti selezionare Usa autenticazione di Windows per utilizzare l'identità fornita dal sistema operativo. Per ulteriori informazioni, vedere Cenni preliminari sui servizi delle applicazioni client.

    Nota

    Se si seleziona Usa autenticazione di Windows, i servizi dell'applicazione client verranno configurati automaticamente per utilizzare un database SQL Server Compact Edition versione 3.5. Questo viene indicato nella finestra di dialogo Impostazioni avanzate per i servizi come descritto nella sezione successiva. Se si seleziona Usa autenticazione basata su form, l'impostazione Usa stringa di connessione personalizzata non verrà deselezionata automaticamente. Pertanto, se il database di SQL Server Compact 3.5 è già stato generato per essere utilizzato con l'autenticazione di Windows, potrebbero verificarsi errori. Per correggerli, deselezionare l'impostazione Usa stringa di connessione personalizzata nella finestra di dialogo Impostazioni avanzate per i servizi.

  5. Se si seleziona Usa autenticazione basata su form, nella casella Percorso servizio di autenticazione specificare l'URL dell'host del servizio, escluso il nome file. La finestra di progettazione aggiungerà automaticamente il nome file standard (Authentication_JSON_AppService.axd) durante la scrittura del valore nel file di configurazione.

  6. Facoltativamente, se si seleziona Usa autenticazione basata su form, è possibile specificare un valore nella casella Provider credenziali . Il provider di credenziali deve implementare l'interfaccia IClientFormsAuthenticationCredentialsProvider. Utilizzando un provider di credenziali, è possibile separare l'interfaccia utente di accesso dall'altro codice dell'applicazione. In questo modo, è possibile creare una sola finestra di dialogo di accesso da utilizzare in più applicazioni. Per ulteriori informazioni, vedere Procedura: implementare l'accesso utente con i servizi dell'applicazione client.

    Se si specifica un provider di credenziali, è necessario specificarlo come nome di tipo completo dell'assembly. Per ulteriori informazioni, vedere Type.AssemblyQualifiedName e Nomi degli assembly. Il formato più semplice di un nome di tipo completo dell'assembly è simile al seguente:

    MyNamespace.MyLoginClass, MyAssembly
    
  7. Nelle caselle di testo Percorso servizi ruoli e Percorso servizi impostazioni Web specificare il percorso di ogni servizio, escluso il nome file. La finestra di progettazione aggiungerà automaticamente i nomi file standard (Role_JSON_AppService.axd e Profile_JSON_AppService.axd) durante la scrittura del valore nel file di configurazione.

  8. Facoltativamente, fare clic su Avanzate per modificare le impostazioni avanzate, ad esempio il comportamento di memorizzazione nella cache locale. Per ulteriori informazioni, vedere la procedura successiva.

Configurazione avanzata

Nelle seguenti procedure viene illustrato come configurare i servizi dell'applicazione client per scenari meno comuni. É ad esempio possibile utilizzare queste opzioni di configurazione per le applicazioni distribuite nei percorsi pubblici, oppure è possibile utilizzare un database SQL Server Compact Edition versione 3.5 crittografato come cache di dati locale.

Per configurare impostazioni avanzate per i servizi dell'applicazione client

  1. Nella pagina Servizi di Progettazione progetti fare clic su Avanzate.

    Verrà visualizzata la finestra di dialogo Impostazioni avanzate per i servizi, come mostrato nell'illustrazione seguente. Per ulteriori informazioni su questa finestra di dialogo, vedere Finestra di dialogo Impostazioni avanzate per i servizi.

    Finestra di dialogo Impostazioni avanzate per i servizi

  2. Selezionare o deselezionare Salva hash della password localmente per consentire l'accesso offline. Quando si seleziona questa opzione, la password dell'utente verrà memorizzata localmente nella cache in formato crittografato. Questo è utile se si implementa la modalità offline per l'applicazione. Con questa opzione selezionata, è possibile convalidare utenti anche quando la proprietà IsOffline è stata impostata su true. Per ulteriori informazioni sulla modalità offline, vedere Procedura: lavorare offline con servizi delle applicazioni client.

  3. Selezionare o deselezionare Richiedi agli utenti di accedere di nuovo a ogni scadenza del cookie del server. Il cookie di autenticazione è configurato nel servizio remoto e indica per quanto tempo rimarrà attivo un accesso dell'utente. Per ulteriori informazioni sulla configurazione del cookie, vedere l'attributo timeout in Elemento forms per authentication (schema delle impostazioni ASP.NET).

    Se si seleziona questa opzione, qualsiasi tentativo di accesso ai servizi delle impostazioni Web o dei ruoli remoti dopo la scadenza del cookie di autenticazione genererà un'eccezione WebException. È possibile gestire questa eccezione e visualizzare una finestra di dialogo di accesso per riconvalidare gli utenti. Per un esempio di questo comportamento, vedere Procedura dettagliata: utilizzo di servizi delle applicazioni client. Questa opzione è utile per le applicazioni distribuite nei percorsi pubblici per garantire che gli utenti che escono dall'applicazione non rimangano autenticati a tempo indeterminato mentre questa continua a essere eseguita.

    Se si deseleziona questa opzione e si tenta di accedere ai servizi remoti dopo la scadenza del cookie di autenticazione, gli utenti verranno riconvalidati automaticamente.

  4. Specificare un valore per Timeout cache servizio ruolo. Impostare questo intervallo su un valore piccolo se i ruoli vengono aggiornati spesso, altrimenti utilizzare un valore maggiore. Se si implementa la modalità offline, impostare l'intervallo temporale su un valore elevato per impedire che le informazioni sui ruoli scadano mentre l'applicazione è offline.

    Il provider dei ruoli accede ai valori o ai servizi dei ruoli memorizzati nella cache quando si chiama il metodo IsInRole. Per reimpostare la cache a livello di codice e forzare l'accesso di questo metodo al servizio remoto, chiamare il metodo ResetCache.

  5. Selezionare o deselezionare Usa stringa di connessione personalizzata. Per ulteriori informazioni, vedere la procedura successiva.

Per configurare i servizi dell'applicazione client in modo da utilizzare un database per la cache locale

  1. Nella pagina Servizi di Progettazione progetti fare clic su Avanzate.

    Verrà visualizzata la finestra di dialogo Impostazioni avanzate per i servizi.

  2. Selezionare Usa stringa di connessione personalizzata

    Nella casella di testo verrà visualizzato il valore predefinito Data Source = |SQL/CE|.

  3. Per generare e utilizzare un database SQL Server Compact Edition versione 3.5, lasciare invariato il valore predefinito della stringa di connessione. In Visual Studio verrà generato un file di database il quale verrà inserito nella directory indicata dalla proprietà Application.UserAppDataPath.

  4. Per generare e utilizzare un database SQL Server Compact 3.5 crittografato, aggiungere i valori password e encrypt database alla stringa di connessione come illustrato nell'esempio seguente.

    Nota

    Assicurarsi di specificare una password complessa. Non è possibile modificare la password dopo che il database è stato generato.

    Data Source = |SQL/CE|;password=<password>;encrypt database=true
    
  5. Per utilizzare il database personalizzato di SQL Server, specificare la stringa di connessione personalizzata. Per informazioni sui formati validi della stringa di connessione, vedere la documentazione di SQL Server. Questo database non viene generato automaticamente. La stringa di connessione deve fare riferimento a un database esistente che è possibile creare utilizzando le seguenti istruzioni SQL.

    CREATE TABLE ApplicationProperties (PropertyName nvarchar(256),
        PropertyValue nvarchar(256))
    CREATE TABLE UserProperties (PropertyName nvarchar(256),
        PropertyValue nvarchar(256))
    CREATE TABLE Roles (UserName nvarchar(256), 
        RoleName nvarchar(256))
    CREATE TABLE Settings (PropertyName nvarchar(256), 
        PropertyStoredAs nvarchar(1), PropertyValue nvarchar(2048))
    

Utilizzo di provider personalizzati

Per impostazione predefinita i servizi dell'applicazione client utilizzano i provider inclusi nello spazio dei nomi System.Web.ClientServices.Providers. Quando si configura l'applicazione utilizzando la pagina Servizi di Progettazione progetti, i riferimenti ai provider specificati vengono aggiunti nel file App.config. Questi provider predefiniti accedono ai provider corrispondenti sul server. I servizi Web spesso sono configurati per accedere a dati dell'utente tramite provider quali SqlMembershipProvider e SqlRoleProvider.

Se si desidera utilizzare provider di servizi personalizzati, in genere è necessario modificare i provider sul lato server in modo che influiscano su tutte le applicazioni client che accedono al server. È tuttavia possibile scegliere di utilizzare provider non predefiniti sul lato client. È possibile specificare provider di autenticazione o di ruoli personalizzati nel file App.config del progetto, come illustrato nella procedura descritta di seguito. Per informazioni sulla creazione di provider di ruoli e di autenticazione personalizzati, vedere Implementazione di un provider di appartenenze e Implementazione di un provider di ruoli. È anche possibile utilizzare un provider di impostazioni personalizzato modificando la classe Settings (a cui è possibile accedere come Properties.Settings.Default in C# e My.Settings in Visual Basic) del progetto. Per ulteriori informazioni, vedere Architettura Impostazioni applicazione.

Per configurare i servizi dell'applicazione client in modo da utilizzare provider non predefiniti

  1. Per utilizzare un provider di servizi di autenticazione o di ruoli non predefinito, completare innanzitutto tutte le altre impostazioni di configurazione utilizzando la pagina Servizi.

  2. Chiudere Progettazione progetti. È necessario eseguire questa operazione perché la pagina Servizi aggiornerà automaticamente il file App.config anche se non si modificano le impostazioni. Se si modifica manualmente il file App.config come descritto in questa procedura e quindi si ritorna alla pagina Servizi, le modifiche verranno reimpostate.

  3. In Esplora soluzioni fare doppio clic su App.config.

    Il file di configurazione dell'applicazione verrà aperto nell'editor di testo.

  4. Individuare l'elemento <providers> all'interno dell'elemento <membership> o <roleManager>. Questi elementi sono figli dell'elemento <system.web>. L'elemento <membership> viene utilizzato per specificare i provider di autenticazione mentre l'elemento <roleManager> viene utilizzato per specificare i provider di ruoli.

  5. Aggiungere un elemento <add> come figlio dell'elemento <providers>. È necessario specificare gli attributi name e type come illustrato nell'esempio riportato di seguito. Il valore dell'attributo di type deve essere un nome di tipo completo dell'assembly. Per ulteriori informazioni, vedere Type.AssemblyQualifiedName e Nomi degli assembly.

    <add name="MyCustomRoleProvider" type="MyNamespace.MyRoleProvider, MyAssembly" />
    
  6. Modificare l'attributo defaultProvider dell'elemento <membership> o <roleManager> in modo da specificare il valore del nome nell'elemento <add> aggiunto nel passaggio precedente.

    <roleManager enabled="true" defaultProvider="MyCustomRoleProvider">
    

Vedere anche

Attività

Procedura: implementare l'accesso utente con i servizi dell'applicazione client

Procedura: lavorare offline con servizi delle applicazioni client

Procedura dettagliata: utilizzo di servizi delle applicazioni client

Riferimenti

Pagina Servizi, Progettazione progetti

Finestra di dialogo Impostazioni avanzate per i servizi

Concetti

Cenni preliminari sui servizi delle applicazioni client

Introduzione a Progettazione progetti

Implementazione di un provider di appartenenze

Implementazione di un provider di ruoli

Architettura Impostazioni applicazione

Altre risorse

Servizi applicazioni client

Creazione e configurazione del database dei servizi per le applicazioni per SQL Server