Compartir a través de


Compatibilidad de ASP.NET

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

En este ejemplo, el cliente es una aplicación de consola (un ejecutable) e Internet Information Servers (IIS) hospeda el servicio.

Nota

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

En este ejemplo se necesita un grupo de aplicaciones de .NET Framework 4 para 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 bajo el título 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 que el grupo de aplicaciones predeterminado use .NET Framework 4 (lo que puede causar problemas de incompatibilidad con los sitios web existentes), haga clic con el botón derecho en el elemento de la 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 las demás 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 establezca el menú desplegable Versión de .NET Framework en .Net Framework v4.0.30128 (o posterior). Después de ejecutar los pasos de configuración siguientes, haga clic con el botón derecho en la aplicación ServiceModelSamples y seleccione Aplicación de administración y Configuración avanzada…. Establezca el Grupo de aplicaciones en el nuevo grupo de aplicaciones.

Este ejemplo se basa en la introducción, que implementa un servicio de calculadora. El contrato ICalculator se ha modificado como contratoICalculatorSession para permitir realizar un conjunto de operaciones, manteniendo un resultado en ejecución.

[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 borrar el resultado para ponerlo a cero llamando a Clear.

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

Nota

El estado de sesión ASP.NET y las sesiones WCF son cosas muy diferentes. Consulte Sesión para obtener detalles sobre las sesiones WCF.

El servicio tiene una dependencia estrecha en estado de sesión ASP.NET y necesita que el modo de compatibilidad de ASP.NET funcione correctamente. Estos requisitos se expresan mediante declaración aplicando el atributo 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;
    }
}

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

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

Configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de haber realizado el procedimiento de instalación única para los ejemplos 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 debe aparecer ahora como una aplicación IIS 7.0.

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

Consulte también