Condividi tramite


compatibilità ASP.NET

L'esempio ASPNetCompatibility illustra come abilitare ASP.NET modalità compatibilità in Windows Communication Foundation (WCF). I servizi in esecuzione in modalità di compatibilità ASP.NET partecipano completamente alla pipeline dell'applicazione ASP.NET e possono usare funzionalità ASP.NET come autorizzazione file/URL, stato sessione e classe HttpContext . La HttpContext classe consente l'accesso a cookie, sessioni e altre funzionalità di ASP.NET. Questa modalità richiede che le associazioni usino il trasporto HTTP e che il servizio stesso sia ospitato in IIS.

In questo esempio il client è un'applicazione console (eseguibile) e il servizio è ospitato in Internet Information Services (IIS).

Annotazioni

La procedura di configurazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

Questo esempio richiede un pool di applicazioni .NET Framework 4 per l'esecuzione. Per creare un nuovo pool di applicazioni o per modificare il pool di applicazioni predefinito, seguire questa procedura.

  1. Aprire il Pannello di controllo. Aprire l'applet Strumenti di amministrazione sotto l'intestazione Sistema e sicurezza . Aprire l'applet Gestione dei servizi di informazione Internet (IIS).

  2. Espandere la visualizzazione albero nel riquadro Connessioni . Selezionare il nodo Pool di applicazione.

  3. Per impostare il pool di applicazioni predefinito per l'uso di .NET Framework 4 (che può causare problemi di incompatibilità con i siti esistenti), fare clic con il pulsante destro del mouse sulla voce di elenco DefaultAppPool e selezionare Impostazioni di base.... Impostare il menu a tendina della versione di .Net Framework alla .Net Framework v4.0.30128 (o versione successiva).

  4. Per creare un nuovo pool di applicazioni che usa .NET Framework 4 (per mantenere la compatibilità per altre applicazioni), fare clic con il pulsante destro del mouse sul nodo Pool di applicazioni e selezionare Aggiungi pool di applicazioni.... Dare un nome al nuovo pool di applicazioni e impostare il menu a discesa della versione di .Net Framework su .Net Framework v4.0.30128 (o versione successiva). Dopo aver eseguito i passaggi di installazione seguenti, fare clic con il pulsante destro del mouse sull'applicazione ServiceModelSamples e scegliere Gestisci applicazione, Impostazioni avanzate.... Impostare il Pool di applicazioni sul nuovo pool di applicazioni.

Questo esempio è basato su Getting Started, che implementa un servizio calcolatrice. Il ICalculator contratto è stato modificato come il contratto ICalculatorSession per consentire l'esecuzione di un set di operazioni, mantenendo al tempo stesso un risultato in corso.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
    [OperationContract]
    void Clear();
    [OperationContract]
    void AddTo(double n);
    [OperationContract]
    void SubtractFrom(double n);
    [OperationContract]
    void MultiplyBy(double n);
    [OperationContract]
    void DivideBy(double n);
    [OperationContract]
    double Result();
}

Il servizio mantiene lo stato tramite la funzionalità per ciascun client quando vengono chiamate più operazioni del servizio per eseguire un calcolo. Il client può recuperare il risultato corrente chiamando Result e può cancellare il risultato su zero chiamando Clear.

Il servizio usa la sessione di ASP.NET per archiviare il risultato per ogni sessione client. Ciò consente al servizio di mantenere il risultato in esecuzione per ogni client tra più chiamate al servizio.

Annotazioni

Lo stato della sessione di ASP.NET e le sessioni di WCF sono cose molto diverse. Per informazioni dettagliate sulle sessioni WCF, vedere Sessione .

Il servizio ha una stretta dipendenza dallo stato di sessione ASP.NET e richiede la modalità di compatibilità ASP.NET per funzionare correttamente. Questi requisiti vengono espressi in modo dichiarativo applicando l'attributo AspNetCompatibilityRequirements .

[AspNetCompatibilityRequirements(RequirementsMode =
                       AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
    double Result
    {  // store result in AspNet Session
       get {
          if (HttpContext.Current.Session["Result"] != null)
             return (double)HttpContext.Current.Session["Result"];
          return 0.0D;
       }
       set
       {
          HttpContext.Current.Session["Result"] = value;
       }
    }
    public void Clear()
    {
        Result = 0.0D;
    }
    public void AddTo(double n)
    {
        Result += n;
    }
    public void SubtractFrom(double n)
    {
        Result -= n;
    }
    public void MultiplyBy(double n)
    {
        Result *= n;
    }
    public void DivideBy(double n)
    {
        Result /= n;
    }
    public double Result()
    {
        return Result;
    }
}

Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nella finestra della console client. Premere INVIO nella finestra del client per chiudere il client.

0, + 100, - 50, * 17.65, / 2 = 441.25
Press <ENTER> to terminate client.

Per configurare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito la One-Time Procedura di installazione per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.

  3. Dopo aver compilato la soluzione, eseguire Setup.bat per configurare l'applicazione ServiceModelSamples in IIS 7.0. La directory ServiceModelSamples dovrebbe ora essere visualizzata come applicazione IIS 7.0.

  4. Per eseguire l'esempio in una configurazione a computer singolo o tra computer, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

Vedere anche