Esta documentación está archivada y no tiene mantenimiento.

Compatibilidad de ASP.NET

Este ejemplo muestra cómo habilitar el modo de compatibilidad ASP.NET en Windows Communication Foundation (WCF). Los servicios que se ejecutan en modo de compatibilidad ASP.NET participan totalmente en el conductor de aplicación ASP.NET y pueden utilizar características ASP.NET como archivo/autorización de URL, 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 Services (IIS) hospeda el servicio.

ms752234.note(es-es,VS.100).gifNota:
El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

ms752234.note(es-es,VS.100).gifNota:
En este ejemplo se requiere un grupo de aplicaciones de .NET Framework versión 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 encabezado Sistema y seguridad. Abra el applet Administrador de Internet Information Services (IIS).

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

  3. Para establecer que el grupo de aplicaciones predeterminado use .NET Framework versión 4 (lo que puede producir problemas de incompatibilidad con los sitios existentes), haga clic con el botón secundario 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 versión 4 (para conservar la compatibilidad con las demás aplicaciones), haga clic con el botón secundario 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 instalación siguientes, haga clic con el botón secundario en la aplicación ServiceModelSamples y seleccione Aplicación de administración y en Configuración avanzada. Establezca el Grupo de aplicaciones en el nuevo grupo de aplicaciones.

ms752234.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (predeterminado) antes de continuar.

<InstallDrive>: \WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WebHost\ASPNetCompatibility

Este ejemplo se basa en Ejemplo de 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 utiliza la sesión ASP.NET para almacenar el resultado para cada sesión. Esto permite al servicio mantener el resultado en ejecución para cada cliente por varias llamadas al servicio.

ms752234.note(es-es,VS.100).gifNota:
El estado de sesión ASP.NET y sesiones WCF son cosas muy diferentes. Vea el Sesión para más detalles sobre las sesiones WCF.

El servicio tiene una dependencia íntima en estado de sesión ASP.NET y exige al modo de compatibilidad ASP.NET que 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.

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de realizar los Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Para compilar el código de la edición .NET de C# o Visual Basic de la solución, siga las instrucciones de Compilación de los ejemplos de Windows Communication Foundation.

  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 equipos única o cruzada, siga las instrucciones de Running the Windows Communication Foundation Samples.

Vea también

Mostrar: