Condividi tramite


Procedura dettagliata: correlazione di parametri dinamici

In questa procedura dettagliata verrà creata un'applicazione Web ASP.NET che include codice personalizzato per creare un errore di parametro dinamico non rilevabile. Verrà illustrata la procedura per isolare e correggere questo tipo di errori.

Alcune applicazioni e siti Web utilizzano parametri dinamici in una o più richieste Web. Un parametro dinamico è un parametro il cui valore viene generato ogni volta che un utente esegue l'applicazione. Un parametro dinamico può causare errori durante la riproduzione del test Web perché il relativo valore dinamico cambia a ogni esecuzione del test. Non è pertanto possibile riprodurre valori registrati. Un esempio di parametro dinamico è un ID sessione. Il valore viene modificato ogni 5-30 minuti.

Il motore di riproduzione e la registrazione del test delle prestazioni gestiscono automaticamente i tipi più comuni di parametri dinamici:

  • Valori di parametri dinamici impostati nel valore del cookie. Vengono gestiti automaticamente dal motore dei test Web durante la riproduzione.

  • Valori di parametri dinamici impostati nei campi nascosti delle pagine HTML, ad esempio lo stato di visualizzazione ASP.NET. Questi vengono gestiti automaticamente dalla Registrazione test prestazioni Web mediante l'aggiunta di regole di estrazione di campi nascosti al test.

  • Valori di parametri dinamici impostati come stringa di query o parametri Post per i form. Vengono gestiti tramite il rilevamento dei parametri dinamici al completamento del test.

Sono tuttavia ancora presenti alcune forme di parametri dinamici che non vengono gestite automaticamente. Per gestire correttamente questi parametri, è possibile aggiungere regole di estrazione ai parametri dinamici nei test delle prestazioni Web. Tuttavia, prima di aggiungere una regola di estrazione, è necessario individuare la posizione in cui inizializzare un parametro dinamico. In questa procedura dettagliata viene illustrato come individuare e correggere un errore fittizio di parametro dinamico ID sessione non rilevabile.

In questa procedura dettagliata, si completeranno le seguenti attività:

  • Creazione di un'applicazione Web ASP.NET.

  • Aggiunta di pagine ASP.NET all'applicazione.

  • Aggiunta di controlli all'applicazione.

  • Modifica del codice ASP.NET

  • Aggiunta di code-behind C#.

  • Aggiunta di Javascript per provocare un errore di parametro dinamico non rilevabile.

  • Registrazione di un nuovo test delle prestazioni Web sull'applicazione e rilevamento di una proprietà dinamica ASP.NET.

  • Esecuzione del test delle prestazioni Web e verifica della presenza di un parametro dinamico non rilevato.

  • Utilizzo della ricerca veloce durante la riproduzione nel Visualizzatore risultati test prestazioni Web per isolare l'errore del parametro dinamico.

  • Aggiunta di una regola di estrazione al parametro dinamico.

  • Associazione della regola di estrazione al parametro dinamico nell'Editor test prestazioni Web.

  • Nuova esecuzione del test delle prestazioni Web senza errori.

Prerequisiti

  • Microsoft Visual Studio 2010 Ultimate.

Creazione di un'applicazione Web

Per creare l'applicazione Web

  1. In Visual Studio 2010 Ultimate scegliere Nuovo dal menu File, quindi fare clic su Progetto.

    Verrà visualizzata la finestra di dialogo Nuovo progetto.

  2. In Modelli installati espandere il linguaggio di programmazione preferito, quindi fare clic su Web.

  3. Nell'elenco di tipi di progetto Web selezionare Applicazione Web ASP.NET vuota.

  4. Nella casella Nome digitare DynamicParameterSample.

  5. Nella casella Percorso specificare il nome della cartella in cui si desidera creare l'applicazione Web.

  6. Selezionare Crea directory per soluzione.

  7. Fare clic su OK.

  8. Scegliere Aggiungi nuovo elemento dal menu Progetto.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.

  9. Nell'elenco di elementi scegliere Web Form.

  10. Nella casella di testo Nome digitare Querystring.aspx, quindi scegliere Aggiungi.

Aggiunta di un controllo HiddenField alla pagina Querystring.aspx

Per aggiungere un controllo HiddenField alla pagina Querystring.aspx

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Querystring.aspx, quindi scegliere Visualizza finestra di progettazione.

    Verrà visualizzata una pagina vuota.

  2. Se la casella degli strumenti non è visibile, scegliere Visualizza e quindi Casella degli strumenti.

  3. Dal gruppo Standard trascinare un controllo HiddenField sulla pagina.

    Nell'area di progettazione verrà aggiunto un controllo HiddenField.

  4. Fare clic sul controllo HiddenField sulla pagina, quindi nella categoria Varie della finestra Proprietà modificare il valore di (ID) in HiddenFieldSessionID.

  5. Scegliere Salva tutto dal menu File.

Aggiunta di codice alla pagina Querystring.aspx

Per aggiungere codice alla pagina Querystring.aspx

  1. Nella parte inferiore della pagina Querystring fare clic su Origine.

    Viene visualizzato l'editor di codice con il codice ASP.NET per la pagina Querystring.aspx.

  2. Aggiungere il codice ASP.NET JavaScript evidenziato di seguito per generare il parametro dinamico ID sessione fittizio:

    <head runat="server">
    <title>Javascript dynamic property correlation sample</title>
    <script type="text/javascript" language="javascript">
        <!--
            function jScriptQueryString() 
            {
                var Hidden = document.getElementById("HiddenFieldSessionID");
                var sessionId = Hidden.value;
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; 
            }
        //-->
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
             <a name="QuerystringHyperlink" href="ASPQuery.aspx?CustomQueryString=ASPQueryString___<%= Session.SessionID %>">Dynamic querystring generated by ASP.net</a>
             <br/>
             <br/>
             <a href="javascript:jScriptQueryString()">Dynamic querystring generated by javascript </a>
        </div>
        <asp:HiddenField ID="HiddenFieldSessionID" runat="server" />
        </form>
    </body>
    </html>
    
  3. Fare clic con il pulsante destro del mouse sulla pagina Querystring e scegliere Visualizza codice.

    Viene visualizzato l'editor di codice con il code-behind Visual C# per la pagina Querystring.aspx.

  4. Aggiungere al metodo Page_Load il seguente codice evidenziato:

        public partial class Querystring : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Session.Add("Key", "Value");
                HiddenFieldSessionID.Value = Session.SessionID;
            }
        }
    
  5. Scegliere Salva tutto dal menu File.

Aggiunta della pagina ASPQuery.aspx, dei controlli e del codice

Per aggiungere la pagina ASPQuery.aspx all'applicazione Web

  1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  2. Nella finestra di dialogo Aggiungi nuovo elemento fare clic sul modello Web Form, digitare ASPQuery.aspx nella casella Nome, quindi scegliere Aggiungi.

  3. Scegliere Salva tutto dal menu File.

Per aggiungere controlli alla pagina ASPQuery.aspx

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su ASPQuery, quindi scegliere Visualizza finestra di progettazione.

    Verrà visualizzata una pagina vuota.

  2. Dal gruppo Standard della Casella degli strumenti trascinare un oggetto Label nella pagina.

    Nell'area di progettazione verrà aggiunto un controllo Label.

  3. Fare clic sul controllo Label sulla pagina, quindi nella categoria Varie della finestra Proprietà modificare il valore di (ID) in IndexLabel.

  4. Dal gruppo Standard della Casella degli strumenti, trascinare un controllo HyperLink nella pagina.

    Nell'area di progettazione verrà aggiunto un controllo HyperLink.

  5. Fare clic sul controllo HyperLink sulla pagina, quindi nella categoria Aspetto della finestra Proprietà modificare il valore di Text in Back.

  6. Nella categoria Navigazione, fare clic su (...) per la proprietà NavigationURL.

    Verrà visualizzata la finestra di dialogo Seleziona URL.

  7. Nell'elenco di pagine sotto Contenuto cartella selezionare Querystring.aspx, quindi fare clic su OK.

  8. Scegliere Salva tutto dal menu File.

Per aggiungere code-behind alla pagina ASPQuery.aspx

  1. Fare clic con il pulsante destro del mouse sulla pagina ASPQuery e scegliere Visualizza codice.

    Viene visualizzato l'editor di codice con il code-behind Visual C# per la pagina ASPQuery.aspx.

  2. Aggiungere al metodo Page_Load il seguente codice evidenziato:

    protected void Page_Load(object sender, EventArgs e)
            {
                int index;
                string qstring;
                string dateportion;
                string sessionidportion;
    
                qstring = Request.QueryString["CustomQueryString"];
                index = qstring.IndexOf("___");
                dateportion = qstring.Substring(0, index);
                index += 3;
                sessionidportion = qstring.Substring(index, qstring.Length - index);
    
                if (sessionidportion != Session.SessionID)
                {
                    Response.StatusCode = 401;
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found.";
                }
                else
                {
                    IndexLabel.Text += "Success.  Dynamic querystring parameter was found.";
                }
                IndexLabel.Text += "<br>\r\n";
            }
    
  3. Scegliere Salva tutto dal menu File.

Aggiunta della pagina JScriptQuery.aspx, dei controlli e del codice

Per aggiungere la pagina JScriptQuery.aspx all'applicazione Web

  1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  2. Nella finestra di dialogo Aggiungi nuovo elemento fare clic sul modello Web Form, digitare JScriptQuery.aspx nella casella Nome, quindi scegliere Aggiungi.

  3. Scegliere Salva tutto dal menu File.

Per aggiungere controlli alla pagina JScriptQuery.aspx

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su JScriptQuery, quindi scegliere Visualizza finestra di progettazione.

    Verrà visualizzata una pagina vuota.

  2. Dal gruppo Standard della Casella degli strumenti trascinare un oggetto Label nella pagina.

    Nell'area di progettazione verrà aggiunto un controllo Label.

  3. Fare clic sul controllo Label sulla pagina, quindi nella categoria Varie della finestra Proprietà modificare il valore di (ID) in IndexLabel.

  4. Dal gruppo Standard della Casella degli strumenti, trascinare un controllo HyperLink nella pagina.

    Nell'area di progettazione verrà aggiunto un controllo HyperLink.

  5. Fare clic sul controllo HyperLink sulla pagina, quindi nella categoria Aspetto della finestra Proprietà modificare il valore di Text in Back.

  6. Nella categoria Navigazione, fare clic su (...) per la proprietà NavigationURL.

    Verrà visualizzata la finestra di dialogo Seleziona URL.

  7. Nell'elenco di pagine sotto Contenuto cartella selezionare Querystring.aspx, quindi fare clic su OK.

  8. Scegliere Salva tutto dal menu File.

Per aggiungere code-behind alla pagina JScriptQuery.aspx

  1. Fare clic con il pulsante destro del mouse sulla pagina JScriptQuery e scegliere Visualizza codice.

    Viene visualizzato l'editor di codice con il code-behind Visual C# per la pagina JScriptQuery.aspx.

  2. Aggiungere al metodo Page_Load il seguente codice evidenziato:

    protected void Page_Load(object sender, EventArgs e)
            {
                int index;
                string qstring;
                string dateportion;
                string sessionidportion;
    
                qstring = Request.QueryString["CustomQueryString"];
                index = qstring.IndexOf("___");
                dateportion = qstring.Substring(0, index);
                index += 3;
                sessionidportion = qstring.Substring(index, qstring.Length - index);
    
                if (sessionidportion != Session.SessionID)
                {
                    Response.StatusCode = 401;
                    IndexLabel.Text = "Failure!  Invalid querystring parameter found.";
                }
                else
                {
                    IndexLabel.Text += "Success.  Dynamic querystring parameter was found.";
                }
                IndexLabel.Text += "<br>\r\n";
            }
    
  3. Scegliere Salva tutto dal menu File.

Test manuale dell'applicazione Web

Per testare manualmente l'applicazione Web

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Querystring.aspx, quindi scegliere Imposta come pagina iniziale.

  2. Premere CTRL+F5 per eseguire l'applicazione Web nel browser. Verrà visualizzata la prima pagina.

  3. Fare clic sul collegamento Dynamic querystring generated by ASP.NET.

  4. La pagina ASPQuery.aspx viene visualizzata con il messaggio "Success. Dynamic querystring parameter found".

  5. Fare clic sul collegamento Indietro.

  6. Fare clic sul collegamento Stringa di query dinamica generata da javascript.

  7. La pagina JScriptQuery.aspx viene visualizzata con il messaggio "Success. Dynamic querystring parameter found".

  8. Fare clic sul collegamento Indietro.

  9. Copiare l'indirizzo dell'applicazione Web negli Appunti o in un file del Blocco note. L'indirizzo, ad esempio, potrebbe essere simile al seguente:

    https://localhost:<NumeroPorta>/Querystring.aspx.

    Quando si creerà un test delle prestazioni Web, più avanti in questa procedura dettagliata, sarà necessario disporre dell'URL.

Creazione di un progetto di test

Per creare il progetto di test

  1. Scegliere Aggiungi dal menu File, quindi fare clic su Nuovo progetto.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo progetto.

  2. In Modelli installati espandere Visual C# e selezionare Test.

  3. Nell'elenco di modelli, scegliere Progetto di test.

  4. Digitare DynamicParameterSampleTest nella casella Nome.

  5. Fare clic su OK.

    Nota

    Per impostazione predefinita, viene aggiunto un file di unit test in Visual Studio 2010 Ultimate. Tale file non è necessario per la presente procedura dettagliata. È pertanto possibile eliminarlo. Se non lo si elimina, non produrrà comunque effetti sulla procedura dettagliata.

Registrazione di un test delle prestazioni Web e rilevamento automatico di parametri dinamici per la pagina ASPQuery.aspx

Per registrare il test Web

  1. Scegliere Nuovo test dal menu File.

    Verrà visualizzata la finestra di dialogo Aggiungi nuovo test.

  2. Nella finestra di dialogo Aggiungi nuovo test selezionare Test delle prestazioni Web, assegnare al test il nome DynamicParameterSampleApp.webtest, quindi scegliere OK.

    Al progetto viene aggiunto un nuovo file di test delle prestazioni Web denominato DynamicParameterSampleApp.webtest e viene aperta la Registrazione test prestazioni Web in una nuova istanza di Internet Explorer.

    Nota di avvisoAttenzione

    Per il corretto funzionamento della procedura descritta di seguito, seguire i passaggi nell'ordine indicato.

  3. Nella barra degli indirizzi del browser digitare o incollare l'indirizzo dell'applicazione Web copiato nella procedura Per testare manualmente l'applicazione Web quindi premere INVIO.

    Nota

    In Visual Studio 2010 Ultimate vengono visualizzati gli URL del test delle prestazioni Web nella Registrazione test prestazioni Web durante la registrazione.

  4. Fare clic sul collegamento Dynamic querystring generated by ASP.NET.

    La pagina ASPQuery.aspx viene visualizzata con il messaggio "Success. Dynamic querystring parameter found".

  5. Fare clic sul collegamento Indietro.

  6. Fare clic sul collegamento Stringa di query dinamica generata da javascript.

  7. La pagina JScriptQuery.aspx viene visualizzata con il messaggio: "Success. Dynamic querystring parameter found.

  8. Fare clic sul collegamento Indietro.

  9. Fare clic su Interrompi nella Registrazione test prestazioni Web per interrompere la registrazione.

    Una finestra di dialogo visualizza il messaggio Rilevamento dei parametri dinamici in corso. Visualizza anche un indicatore di stato con lo stato di rilevazione del parametro nelle risposte HTTP ricevute.

    Viene quindi visualizzata la finestra di dialogo Promuovi parametri dinamici a parametri di test Web.

    Promozione di parametri dinamici

    Poiché il codice personalizzato aggiunto per il parametro dinamico in CustomQueryString nella pagina ASPQuery della procedura è stato rilevato automaticamente, questo viene elencato nella finestra di dialogo.

    Il parametro dinamico per CustomQueryString nella pagina JScriptQuery, tuttavia, non è stato rilevato automaticamente poiché il codice Javascript personalizzato è stato aggiunto alla pagina Querystring.aspx nella procedura Aggiunta di Codice alla pagina Querystring.aspx.

  10. Fare clic su OK per aggiungere una regola di estrazione a Querystring.aspx.

    L'Editor test prestazioni Web viene visualizzato con la prima richiesta per Querystring.aspx completamente espansa. Viene mostrata la regola di estrazione aggiunta.

  11. Espandere completamente la seconda richiesta nell'albero delle richieste per ASPQuery.aspx e notare che il valore di CustomQueryString è stato associato alla regola di estrazione.

    Regola di estrazione aggiunta per un parametro dinamico

  12. Scegliere Salva DynamicParameterSampleApp.webtest dal menu File per salvare il test delle prestazioni Web appena registrato.

Esecuzione del test delle prestazioni Web per generare l'errore di parametro dinamico non rilevato

Per riprodurre il test delle prestazioni Web

  1. Nell'Editor test prestazioni Web fare clic su Esegui nella barra degli strumenti per visualizzare il Visualizzatore risultati test prestazioni Web.

  2. Notare che la quarta richiesta non è riuscita e ha restituito un errore. La quarta richiesta è per la pagina JScriptQuery.aspx.

    Errore di parametro dinamico non rilevato

Isolamento del parametro dinamico che provoca l'errore

Per utilizzare Ricerca veloce nella registrazione della riproduzione

  1. Nel Visualizzatore risultati test prestazioni Web fare clic con il pulsante destro del mouse sulla quarta richiesta. La quarta richiesta è per la pagina JScriptQuery.aspx che ha restituito un errore causato dal problema relativo al parametro dinamico. Selezionare Vai a test Web.

    Vai a test Web

    Verrà aperto l'Editor test prestazioni Web con la richiesta per JScriptQuery.aspx evidenziata.

  2. Espandere completamente il nodo della richiesta e notare che la parte "wy0zaykqadkoscuvoiqemofm" di CustomQueryString risulta essere dinamica: "CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm".

    Richiesta di Editor test sulle prestazioni Web con errore

  3. Tornare al Visualizzatore risultati test prestazioni Web e selezionare la pagina JScriptQuery.aspx che ha restituito errore.

  4. Fare clic sulla scheda Richiesta.

  5. Verificare che la casella di controllo Mostra dati non elaborati sia deselezionata.

  6. Scorrere in basso fino a Parametri QueryString nella colonna Nome.

  7. Fare clic con il pulsante destro del mouse su CustomQueryString e selezionare Ricerca veloce.

    Isolamento di un parametro dinamico

  8. Nella finestra di dialogo Trova il valore del parametro viene visualizzato in Trova.

    In questo caso, esaminando l'Editor test prestazioni Web sarà evidente che all'oggetto CustomQueryString della richiesta per JScriptQuery.aspx è stato assegnato un valore di: jScriptQueryString___wy0zaykqadkoscuvoiqemofm e che la parte dinamica sospetta è "wy0zaykqadkoscuvoiqemofm".

  9. Nell'elenco a discesa Trova, rimuovere la parte sospetta della stringa di ricerca. La stringa deve essere "CustomQueryString=jScriptQueryString___".

    Finestra di dialogo Trova

  10. Ai parametri dinamici sono assegnati i valori in una delle richieste che precede la richiesta che contiene l'errore. Selezionare pertanto la casella di controllo Cerca in alto e fare clic su Trova successivo fino a visualizzare la richiesta per Querystring.aspx precedente evidenziata nel riquadro Richiesta. Questo dovrebbe avvenire dopo avere fatto clic su Trova successivo tre volte.

    Isolamento di un errore dinamico tramite la ricerca

    Come mostrato nell'illustrazione, e nel codice Javascript implementato in precedenza, al parametro della stringa di query CustomQueryString è assegnato un valore "jScriptQueryString___" e vi viene concatenato anche il valore restituito dalla variabile sessionId.

            function jScriptQueryString() 
            {
                var Hidden = document.getElementById("HiddenFieldSessionID");
                var sessionId = Hidden.value;
                window.location = 'JScriptQuery.aspx?CustomQueryString=jScriptQueryString___' + sessionId; 
            }
    

    Si è ora determinata l'area in cui si verifica l'errore, e si è stabilito che è necessario estrarre il valore per sessionId. Tuttavia, il valore di estrazione è solo il testo ed è pertanto necessario isolare l'errore ulteriormente tentando di individuare una stringa dove sia visualizzato il valore effettivo di sessionId. Analizzando il codice, si noterà che la variabile sessionId è uguale al valore restituito da HiddenFieldSessionID.

  11. Evidenziare l'oggetto HiddenFieldSessionID, fare clic su di esso con il pulsante destro del mouse, quindi selezionare Ricerca veloce.

  12. Nella finestra di dialogo Trova, deselezionare la casella di controllo Cerca in alto e selezionare Richiesta corrente.

  13. Scegliere Trova successivo.

    La prima corrispondenza di HiddenFieldSessionID è evidenziata nella riga seguente. È inoltre possibile visualizzare il valore assegnato:

    <input type="hidden" name="HiddenFieldSessionID" id="HiddenFieldSessionID" value="0rvcxknlabd30xnbrjtuy11u" />
    

    Ricerca di HiddenFieldSessionID

    Si noti che il valore restituito non è la stessa stringa della Registrazione test prestazioni Web originale. Per questa riproduzione, il valore è "0rvcxknlabd30xnbrjtuy11u", mentre nella registrazione il valore è "wy0zaykqadkoscuvoiqemofm". Poiché il valore non corrisponde a quello della registrazione originale, viene generato l'errore.

Per aggiungere una regola di estrazione dalla riproduzione registrata

  1. Nella barra degli strumenti del Visualizzatore risultati test Web fare clic su Risultato registrato.

    I risultati registrati originali del test delle prestazioni Web viene visualizzato in una scheda separata denominata DynamicParameterSampleApp [Registrato].

  2. Selezionare la terza richiesta, se non è già selezionata. Si tratta dell'oggetto Querystringrequest.aspx isolato nel passaggio precedente.

  3. Scegliere la scheda Risposta. Scorrere verso il basso ed evidenziare il valore del parametro dinamico originale di "wy0zaykqadkoscuvoiqemofm" isolato nella procedura precedente. Fare clic su di esso con il pulsante destro del mouse e selezionare Aggiungi regola di estrazione.

    Aggiungi regola di estrazione

    L'Editor test prestazioni Web viene visualizzato con la nuova regola di estrazione selezionata nella richiesta per Querystring.aspx. Alla nuova regola di estrazione è assegnato un valore "Param0".

    Nella finestra di dialogo Microsoft Visual Studio viene visualizzato un messaggio che informa che è stata trovata una corrispondenza per il testo estratto a cui associare il parametro.

    Regola di estrazione aggiunta come param(0)

  4. Scegliere .

    La finestra di dialogo Trova e sostituisci nella richiesta viene visualizzata con il testo estratto wy0zaykqadkoscuvoiqemofm nell'elenco a discesa Trova e con il parametro {{Param0}} nell'elenco a discesa Sostituisci con.

    Ricerca di Param0 successivo

  5. Scegliere Trova successivo.

  6. Nella richiesta per JScriptQuery.aspx il parametro QueryString CustomQueryString=jScriptQueryString___wy0zaykqadkoscuvoiqemofm è evidenziato.

  7. Fare clic su Sostituisci.

    Stringa di query aggiornata con Param(0)

  8. Il parametro QueryString nella richiesta per JScriptQuery.aspx viene aggiornato utilizzando il nuovo parametro di contesto: CustomQueryString=jScriptQueryString___ {{Param0}}.

  9. Nell'albero delle richieste si noti la similitudine tra le strutture del parametro dinamico rilevato e del parametro dinamico non rilevato di cui si è effettuata la correlazione.

Vedere anche

Concetti

Cenni preliminari sul Visualizzatore risultati test prestazioni Web

Altre risorse

Risoluzione di problemi relativi alla riproduzione del Visualizzatore risultati test prestazioni Web nei test delle prestazioni Web

Procedura: alzare di livello i parametri dinamici a parametri dei test delle prestazioni Web