Procedura dettagliata: reindirizzamento di un'applicazione a un servizio Web diverso durante l'installazione
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
Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. 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
- Creare un'applicazione Web con un riferimento Web a un servizio Web. Ai fini della presente procedura, è sufficiente un riferimento Web a qualsiasi servizio Web valido.
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 creare il progetto Libreria di classi
Fare clic con il pulsante destro del mouse sul nodo della soluzione in Esplora soluzioni e scegliere Aggiungi, quindi Nuovo progetto.
Nella finestra di dialogo Aggiungi nuovo progetto fare clic sul nodo Visual Basic e selezionare Libreria di classi.
Denominare il progetto InstallerClassLibrary.
Per aggiungere e implementare una classe Installer
Fare clic con il pulsante destro del mouse sul nodo del progetto InstallerClassLibrary in Esplora soluzioni e scegliere Aggiungi, quindi Classe.
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.
Fare doppio clic sulla finestra di progettazione per aprire l'editor di codice.
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 install_log As New System.IO.StreamWriter("Installation.log") install_log.AutoFlush = True Try Dim providedName = Me.Context.Parameters.Item("ServerName") Dim svcName = Me.Context.Parameters.Item("ServiceName") install_log.WriteLine("Starting Edit of the config file") If providedName = "" OrElse svcName = "" Then Throw New InstallException("No arguments specified") End If ' Uses reflection to find the location of the config file. Dim strConfigLoc = System.Reflection.Assembly.GetExecutingAssembly().Location Dim strTemp = strConfigLoc strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - strTemp.LastIndexOf("\")) strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - strTemp.LastIndexOf("\")) Dim fInfo As New System.IO.FileInfo(strTemp & "\web.config") install_log.WriteLine("File info: " & strTemp) If Not fInfo.Exists Then Throw New InstallException("Missing config file") End If ' Loads the config file into the XML DOM. ' Loads the config file into the XML DOM. Dim xmlDoc = XDocument.Load(fInfo.FullName) ' Finds the right node and change it to the new value. Dim foundIt As Boolean = False For Each node In xmlDoc.<configuration>.<appSettings>.<add> If node.@key = "servername.service" Then ' Note that "Service1.asmx" should be replaced with the ' actual name of the XML Web service file. node.@value = "http://" & providedName & "/" & svcName & "/Service1.asmx" foundIt = True 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. xmlDoc.Save(fInfo.FullName) Finally install_log.WriteLine("Ending edit of config file") install_log.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.
In Esplora soluzioni aprire il file Web.config facendo doppio clic su di esso.
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.
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
Fare clic con il pulsante destro del mouse sul nodo della soluzione in Esplora soluzioni e scegliere Aggiungi, quindi Nuovo progetto.
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.
Nella finestra Proprietà selezionare la Proprietà ProductName e impostarla sul nome dell'applicazione Web.
Nell'Editor del file system selezionare Cartella Applicazione Web.
Scegliere Aggiungi dal menu Azione, quindi Output progetto.
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
In Esplora soluzioni selezionare il progetto WebAppSetup.
Scegliere Editor dal menu Visualizza, quindi Azioni personalizzate.
Verrà visualizzato l'Editor delle azioni personalizzate.
Nell'Editor delle azioni personalizzate selezionare il nodo Installa.
Scegliere Aggiungi azione personalizzata dal menu Azione.
Fare doppio clic su Cartella Applicazione Web, quindi selezionare Output primario da InstallerClassLibrary (attivo).
Nella finestra Proprietà controllare che la proprietà InstallerClass sia impostata su True.
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.
Aggiunta di una finestra di dialogo
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
Selezionare il progetto di installazione in Esplora soluzioni.
Scegliere Editor dal menu Visualizza, quindi Interfaccia utente.
Nell'Editor dell'interfaccia utente selezionare il nodo Avvio nella sezione Installa.
Scegliere Aggiungi finestra di dialogo dal menu Azione.
Nella finestra di dialogo Aggiungi finestra di dialogo selezionare Caselle di testo (A), quindi scegliere OK.
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.
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
NotaIndica 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
Selezionare il progetto di installazione in Esplora soluzioni.
Scegliere Installa dal menu Progetto.
Per distribuire l'applicazione su un server Web da un altro computer
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.
Copiare il file .msi e tutti gli altri file e sottodirectory nella directory sul computer che funge da server Web.
Sul computer che funge da server Web fare doppio clic sul file Setup.exe per eseguire il programma di installazione.
Vedere anche
Altre risorse
Distribuzione di applicazioni e componenti
Gestione delle azioni personalizzate durante la distribuzione