Condividi tramite


Compatibilità con ASP.NET

In questo esempio viene illustrato come attivare la modalità di compatibilità di ASP.NET in Windows Communication Foundation (WCF). I servizi in esecuzione nella modalità di compatibilità di ASP.NET si integrano pienamente nella pipeline dell'applicazione ASP.NET e possono avvalersi delle funzionalità di ASP.NET, ad esempio l'autorizzazione file/URL, lo stato della sessione e la classe HttpContext. La classe HttpContext consente di accedere ai cookie, alle sessioni e ad altre funzionalità di ASP.NET. Questa modalità richiede che le associazioni utilizzino il trasporto HTTP e che il servizio stesso debba essere ospitato in IIS.

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

Nota

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

Questo esempio si bassa su Esempio della guida introduttiva, che implementa un servizio di calcolatrice. Il contratto ICalculator è stato modificato al contratto ICalculatorSession per consentire l'esecuzione di un insieme di operazioni mantenendo il risultato della sessione.

[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();
}

Utilizzando questa funzionalità il servizio mantiene lo stato di ogni client, mentre vengono chiamate più operazioni del servizio per eseguire un calcolo. Il client può recuperare il risultato corrente chiamando Result e può azzerare il risultato chiamando Clear.

Il servizio utilizza la sessione di ASP.NET per archiviare il risultato per ogni sessione client. Questo consente al servizio di mantenere il risultato della sessione per ogni client, su più chiamate al servizio.

Nota

Lo stato della sessione di ASP.NET e delle sessioni di WCF sono molto diversi. Vedere l'esempio Sessioneper ulteriori dettagli sulle sessioni di WCF.

Il servizio ha una dipendenza stretta con lo stato della sessione di ASP.NET e richiede che la modalità di compatibilità di ASP.NET funzioni 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 arrestare il client.

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

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.

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

  3. Per eseguire l'esempio su un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.