Compartir a través de


compatibilidad de ASP.NET

En el ejemplo ASPNetCompatibility se muestra cómo habilitar ASP.NET modo de compatibilidad en Windows Communication Foundation (WCF). Los servicios que se ejecutan en modo de compatibilidad de ASP.NET participan plenamente en la canalización de aplicaciones de ASP.NET y pueden usar características de ASP.NET, como la autorización de archivos o direcciones URL, el estado de sesión y la HttpContext clase . La HttpContext clase permite el acceso a cookies, sesiones y otras características de ASP.NET. Este modo requiere que los enlaces usen el transporte HTTP y el propio servicio se deben hospedar en IIS.

En este ejemplo, el cliente es una aplicación de consola (un ejecutable) y el servicio se hospeda en Internet Information Services (IIS).

Nota:

El procedimiento de configuración y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

Este ejemplo requiere un grupo de aplicaciones de .NET Framework 4 para poder ejecutarse. Para crear un nuevo grupo de aplicaciones o modificar el grupo de aplicaciones predeterminado, siga estos pasos.

  1. Abra el Panel de control. Abra el applet Herramientas administrativas en el encabezado Sistema y seguridad . Abra el applet administrador de Internet Information Services (IIS).

  2. Expanda la vista de árbol en el panel Conexiones . Seleccione el nodo Grupos de aplicaciones .

  3. Para establecer el grupo de aplicaciones predeterminado para usar .NET Framework 4 (lo que puede provocar problemas de incompatibilidad con sitios existentes), haga clic con el botón derecho en el elemento de lista DefaultAppPool y seleccione Configuración básica.... Establezca el menú desplegable Versión de .NET Framework en .Net Framework v4.0.30128 (o posterior).

  4. Para crear un nuevo grupo de aplicaciones que use .NET Framework 4 (para conservar la compatibilidad con otras aplicaciones), haga clic con el botón derecho en el nodo Grupos de aplicaciones y seleccione Agregar grupo de aplicaciones .... Asigne un nombre al nuevo grupo de aplicaciones y seleccione en la lista desplegable la Versión de .Net Framework.Net Framework v4.0.30128 (o posterior). Después de ejecutar los pasos de instalación siguientes, haga clic con el botón derecho en la aplicación ServiceModelSamples y seleccione Administrar aplicación, Configuración avanzada.... Establezca el grupo de aplicaciones en el nuevo grupo de aplicaciones.

Este ejemplo se basa en la Guía de inicio, que implementa un servicio de calculadora. El contrato ICalculator ha sido modificado para alinearse con el contrato ICalculatorSession y permitir la realización de un conjunto de operaciones, mientras se mantiene un resultado continuo.

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

El servicio mantiene el estado, utilizando la característica, para cada cliente ya que se llama a varias operaciones de servicio para realizar un cálculo. El cliente puede recuperar el resultado actual llamando a Result y puede borrar el resultado a cero llamando a Clear.

El servicio usa la sesión de ASP.NET para almacenar el resultado de cada sesión de cliente. Esto permite al servicio mantener el resultado en ejecución para cada cliente en varias llamadas al servicio.

Nota:

ASP.NET estado de sesión y sesiones WCF son cosas muy diferentes. Consulte Sesión para obtener más información sobre las sesiones de WCF.

El servicio tiene una dependencia íntima del estado de sesión de ASP.NET y requiere el modo de compatibilidad de ASP.NET para funcionar correctamente. Estos requisitos se expresan mediante declaración aplicando el AspNetCompatibilityRequirements atributo .

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

Al ejecutar el ejemplo, las solicitudes de operación y las respuestas se muestran en la ventana de la consola del cliente. Presione ENTRAR en la ventana del cliente para apagar el cliente.

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

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de haber realizado el procedimiento de configuraciónOne-Time para las muestras de Windows Communication Foundation.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  3. Una vez compilada la solución, ejecute Setup.bat para configurar la aplicación ServiceModelSamples en IIS 7.0. El directorio ServiceModelSamples debería aparecer ahora como una aplicación de IIS 7.0.

  4. Para ejecutar el ejemplo en una configuración de un solo equipo o entre equipos, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.

Consulte también