Condividi tramite


Procedura dettagliata: reindirizzamento di un'applicazione a un servizio Web diverso durante l'installazione

Aggiornamento: novembre 2007

In questa procedura dettagliata viene illustrato come creare un'applicazione Web che è possibile reindirizzare a un servizio Web diverso utilizzando la proprietà Comportamento URL, una classe Installer e un progetto di installazione Web. L'operazione risulta utile quando è necessaria una destinazione locale del servizio Web durante lo sviluppo e si desidera utilizzare una versione di produzione del servizio Web quando l'applicazione viene distribuita.

Nota:

È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida, a seconda delle impostazioni attive o della versione utilizzata. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Creazione di un progetto di applicazione Web

Il primo passaggio consiste nel creare un'applicazione Web ASP.NET contenente un riferimento Web a un servizio Web.

Per creare il progetto

Aggiunta di una classe Installer

Le classi Installer, note anche come componenti di installazione, sono classi .NET Framework che vengono richiamate come azioni personalizzate durante l'installazione. In questo caso, alla soluzione verrà aggiunto un progetto Libreria di classi. In tale progetto verrà creata una classe Installer il cui metodo Install verrà sottoposto a override, aggiungendo codice per modificare il file con estensione config dell'applicazione Web. Per ulteriori informazioni sulle classi Installer, vedere Introduzione ai componenti di installazione.

Per creare il progetto Libreria di classi

  1. Fare clic con il pulsante destro del mouse sul nodo della soluzione in Esplora soluzioni e scegliere Aggiungi, quindi Nuovo progetto.

  2. Nella finestra di dialogo Aggiungi nuovo progetto fare clic sul nodo Visual Basic e selezionare Libreria di classi.

  3. Denominare il progetto InstallerClassLibrary.

Per aggiungere e implementare una classe Installer

  1. Fare clic con il pulsante destro del mouse sul nodo del progetto InstallerClassLibrary in Esplora soluzioni e scegliere Aggiungi, quindi Classe.

  2. Nella finestra di dialogo Aggiungi nuovo elemento selezionare Classe Installer e modificare il valore della casella Nome in WebServiceInstaller.vb.

    Facendo clic su Aggiungi, la classe verrà aggiunta al progetto e verrà visualizzata la finestra di progettazione per la classe Installer.

  3. Fare doppio clic sulla finestra di progettazione per aprire l'editor di codice.

  4. In WebServiceInstaller.vb aggiungere il codice riportato di seguito in fondo al modulo della classe Installer, appena al di sopra della dichiarazione End Class. Questo codice implementa il metodo Install:

    Public Overrides Sub Install(ByVal stateSaver As _
      System.Collections.IDictionary)
    
       ' Gets the parameter passed across in the CustomActionData.
       Dim installlog As New System.IO.StreamWriter("Installation.log")
       installlog.AutoFlush = True
       Try
         Dim ProvidedName As String = Me.Context.Parameters.Item("ServerName")
         Dim SvcName As String = Me.Context.Parameters.Item("ServiceName")
    
          installlog.WriteLine("Starting Edit of the config file")
    
          If ProvidedName = "" Or SvcName = "" Then
             Throw New InstallException("No arguments specified")
          End If
    
          ' Uses reflection to find the location of the config file.
          Dim Asm As System.Reflection.Assembly = _
            System.Reflection.Assembly.GetExecutingAssembly
          Dim strConfigLoc As String
          strConfigLoc = Asm.Location
    
          Dim strTemp As String
          strTemp = strConfigLoc
          strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - _
            strTemp.LastIndexOf("\"))
          strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - _
            strTemp.LastIndexOf("\"))
    
          Dim FileInfo As System.IO.FileInfo = New System.IO.FileInfo( _
            strTemp & "\web.config")
    
          installlog.WriteLine("File info: " & strTemp)
    
          If Not FileInfo.Exists Then
             Throw New InstallException("Missing config file")
          End If
    
          ' Loads the config file into the XML DOM.
          Dim XmlDocument As New System.Xml.XmlDocument()
          XmlDocument.Load(FileInfo.FullName)
    
          ' Finds the right node and change it to the new value.
          Dim Node As System.Xml.XmlNode
          Dim FoundIt As Boolean = False
          For Each Node In _
             XmlDocument.Item("configuration").Item("appSettings")
             ' Skips any comments.
             If Node.Name = "add" Then
                If Node.Attributes.GetNamedItem("key").Value = _
                   "servername.service" Then
                   ' Note that "Service1.asmx" should be replaced with the
                   ' actual name of the XML Web service file.
                   Node.Attributes.GetNamedItem("value").Value = "http://" _
                     & ProvidedName & "/" & SvcName & "/Service1.asmx"
                   FoundIt = True
                End If
             End If
          Next Node
    
          If Not FoundIt Then
             Throw New InstallException("Config file did not contain a ServerName section")
          End If
    
          ' Writes out the new config file.
          XmlDocument.Save(FileInfo.FullName)
    
       Finally
          installlog.WriteLine("Ending edit of config file")
          installlog.Close()
       End Try
    
    End Sub
    

    Il codice sopra riportato crea prima un file di log dell'installazione in cui verrà registrato lo stato dell'azione personalizzata. Lo spazio dei nomi System.Reflection viene utilizzato per individuare l'assembly in corso di installazione e per individuare il file con estensione config associato. Il modello del documento XML viene utilizzato per scorrere il file CONFIG fino a quando non viene individuata la sezione appSettings . Quando viene individuata la chiave servername.service, il valore associato viene modificato in modo da comprendere i parametri passati, reindirizzando l'applicazione per l'utilizzo del nuovo servizio Web.

  5. In Esplora soluzioni aprire il file Web.config facendo doppio clic su di esso.

  6. Copiare il valore della chiave per il servizio Web nella sezione appSettings . La chiave accetta il formato servername.service, dove servername rappresenta il server in cui si trova il servizio Web e service indica il nome del servizio Web.

  7. Aprire il modulo della classe Installer nell'editor di codice e sostituire il testo "servername.service" con il valore che è stato copiato nel passaggio precedente.

Aggiunta di un progetto di installazione Web

I progetti di installazione vengono utilizzati per creare un file di Installer per l'applicazione. In base alla tecnologia Windows Installer, i progetti di installazione comprendono funzionalità quali l'esecuzione di azioni personalizzate durante l'installazione e la personalizzazione dell'interfaccia utente di installazione. Per ulteriori informazioni sui progetti di installazione, vedere Distribuzione di applicazioni e componenti.

Per aggiungere un progetto di installazione Web

  1. Fare clic con il pulsante destro del mouse sul nodo della soluzione in Esplora soluzioni e scegliere Aggiungi, quindi Nuovo progetto.

  2. Nella finestra di dialogo Aggiungi nuovo progetto espandere il nodo Altri tipi di progetto nel riquadro Tipi progetto e selezionare il nodo Progetti di installazione e distribuzione.

    Nel riquadro Modelli selezionare Progetto di installazione Web. Nella casella Nome specificare il nome WebAppSetup per il progetto.

    Facendo clic su OK il progetto verrà aggiunto alla soluzione e verrà visualizzato l'Editor del file system.

  3. Nella finestra Proprietà selezionare la Proprietà ProductName e impostarla sul nome dell'applicazione Web.

  4. Nell'Editor del file system selezionare Cartella Applicazione Web.

  5. Scegliere Aggiungi dal menu Azione, quindi Output progetto.

  6. Nella finestra di dialogo Aggiungi gruppo output progetto selezionare InstallerClassLibrary dall'elenco a discesa Progetto, quindi selezionare Output primario.

    Facendo clic su OK l'output primario di InstallerClassLibrary verrà aggiunto al progetto di installazione Web.

Aggiunta di un'azione personalizzata

Le azioni personalizzate consentono di eseguire codice alla fine di un'installazione per effettuare operazioni che non possono essere gestite durante l'installazione. Il codice per un'azione personalizzata può essere contenuto in un file DLL, EXE, di script o di assembly. Per ulteriori informazioni sulle azioni personalizzate, vedere Gestione delle azioni personalizzate durante la distribuzione.

Per aggiungere la classe Installer come un'azione personalizzata

  1. In Esplora soluzioni selezionare il progetto WebAppSetup.

  2. Scegliere Editor dal menu Visualizza, quindi Azioni personalizzate.

    Verrà visualizzato l'Editor delle azioni personalizzate.

  3. Nell'Editor delle azioni personalizzate selezionare il nodo Installa.

  4. Scegliere Aggiungi azione personalizzata dal menu Azione.

  5. Fare doppio clic su Cartella Applicazione Web, quindi selezionare Output primario da InstallerClassLibrary (attivo).

  6. Nella finestra Proprietà controllare che la proprietà InstallerClass sia impostata su True.

  7. Selezionare la proprietà CustomActionData e immettere il testo seguente: /ServerName=[EDITA1] /ServiceName=[EDITA2]

    La proprietà CustomActionData rende disponibile i due parametri che vengono passati all'azione personalizzata separati da uno spazio.

Le finestre di dialogo dell'interfaccia utente vengono visualizzate durante l'installazione per raccogliere le informazioni dell'utente. Per ulteriori informazioni sulle finestre di dialogo dell'interfaccia utente, vedere Gestione dell'interfaccia utente durante la distribuzione.

Per aggiungere una finestra di dialogo personalizzata dell'interfaccia utente

  1. Selezionare il progetto di installazione in Esplora soluzioni.

  2. Scegliere Editor dal menu Visualizza, quindi Interfaccia utente.

  3. Nell'Editor dell'interfaccia utente selezionare il nodo Avvio nella sezione Installa.

  4. Scegliere Aggiungi finestra di dialogo dal menu Azione.

  5. Nella finestra di dialogo Aggiungi finestra di dialogo selezionare Caselle di testo (A), quindi scegliere OK.

  6. Scegliere Sposta su dal menu Azione e ripetere questa operazione fino a quando la finestra di dialogo Caselle di testo (A) non si trova al di sopra della finestra di dialogo Percorso di installazione.

  7. Nella finestra Proprietà impostare le seguenti proprietà:

    Proprietà

    Valore

    BannerText

    Immettere il nome del server e del servizio.

    Edit1Label

    Il nome del server.

    Edit1Value

    Localhost

    Nota:

    Indica un server predefinito. È possibile immettere il nome del proprio server predefinito.

    Edit2Label

    Il nome del servizio.

    Edit2Value

    <nome del servizio>

    Edit3Visible

    False

    Edit4Visible

    False

    Si noti che la proprietà Edit1Property è impostata su "EDITA1" e la proprietà Edit2Property è impostata su "EDITA2", ovvero corrispondono ai valori immessi nella proprietà CustomActionData nell'editor delle azioni personalizzate. Quando gli utenti inseriscono il testo in questi controlli di modifica durante l'installazione, i valori vengono automaticamente passati mediante la proprietà CustomActionData.

Compilazione e distribuzione dell'applicazione

Il passaggio finale consiste nel compilare un progetto di installazione in modo da creare il file di Installer, quindi nell'installare l'applicazione sul server di destinazione.

Per compilare il progetto di installazione

  • Scegliere Compila NomeProgetto dal menu Compila, dove NomeProgetto rappresenta il nome del progetto.

Per distribuire l'applicazione su un server Web dal computer di sviluppo

  1. Selezionare il progetto di installazione in Esplora soluzioni.

  2. Scegliere Installa dal menu Progetto.

Per distribuire l'applicazione su un server Web da un altro computer

  1. In Esplora risorse passare alla directory del progetto e trovare il programma di installazione appena compilato. Il percorso predefinito sarà \Documents and Settings\yourloginname\Documenti\Visual Studio Projects\setupprojectname\project configuration\productname.msi. Il valore project configuration predefinito è Debug.

  2. Copiare il file .msi e tutti gli altri file e sottodirectory nella directory sul computer che funge da server Web.

  3. Sul computer che funge da server Web fare doppio clic sul file Setup.exe per eseguire il programma di installazione.

Vedere anche

Concetti

Introduzione ai componenti di installazione

Altre risorse

Distribuzione di applicazioni e componenti

Gestione delle azioni personalizzate durante la distribuzione

Gestione dell'interfaccia utente durante la distribuzione