Compartir a través de


Cómo agregar un extremo AJAX de ASP.NET sin usar la configuración

Windows Communication Foundation (WCF) le permite crear un servicio que expone un extremo de ASP.NET con AJAX habilitado al que se puede llamar desde JavaScript de un sitio web del cliente. Para crear este tipo de extremo, puede usar un archivo de configuración, como con todos los otros extremos de WCF, o utilizar un método que no requiera ningún elemento de configuración. En este tema se muestra el segundo enfoque.

Para crear servicios con extremos de AJAX de ASP.NET sin configuración, Internet Information Services (IIS) debe hospedar los servicios. Para activar un extremo de AJAX de ASP.NET mediante este enfoque, especifique el WebScriptServiceHostFactory como el parámetro Factory de la directiva @ServiceHost en el archivo .svc. Este generador personalizado es el componente que configura automáticamente un extremo de AJAX de ASP.NET para que se le pueda llamar desde JavaScript en un sitio web del cliente.

Para ver un ejemplo ilustrativo, consulte Servicio AJAX sin configuración.

Para ver un esquema sobre cómo configurar un extremo de AJAX de ASP.NET mediante elementos de configuración, vea Uso de la configuración para agregar un extremo AJAX de ASP.NET.

Para crear un servicio WCF básico

  1. Defina un contrato de servicios de WCF básico con una interfaz marcada con el atributo ServiceContractAttribute. Marque cada operación con el OperationContractAttribute. Asegúrese de establecer la propiedad Namespace.

    [ServiceContract(Namespace = "MyService")]]
    public interface ICalculator
    {
        [OperationContract]
        // This operation returns the sum of d1 and d2.
        double Add(double n1, double n2);
    
        //Other operations omitted…
    
    }
    
  2. Implemente el contrato de servicios ICalculator con un CalculatorService.

    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
    
    //Other operations omitted…
    
  3. Defina un espacio de nombres para las implementaciones de CalculatorService e ICalculator ajustándolas en un bloque de espacios de nombres.

    Namespace Microsoft.Ajax.Samples
    {
        //Include the code for ICalculator and Caculator here.
    }
    

Hospedaje del servicio en Internet Information Services sin configuración

  1. Cree un nuevo archivo denominado servicio con una extensión .svc en la aplicación. Modifique este archivo agregando la información de directiva @ServiceHost apropiada para el servicio. Especifique que el WebScriptServiceHostFactory se ha de utilizar en la directiva @ServiceHost para configurar automáticamente un extremo de AJAX de ASP.NET.

    <%@ServiceHost 
        language=c# 
        Debug="true" 
        Service="Microsoft.Ajax.Samples.CalculatorService"
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory
    %>
    
  2. Compile el servicio y llámelo desde el cliente. Internet Information Services (IIS) activa el servicio cuando se llama. Para obtener más información sobre hospedaje en IIS, vea Procedimiento para hospedar un servicio WCF en IIS.

Para llamar al servicio.

  1. El extremo se configura en una dirección vacía relativa al archivo .svc, por lo que el servicio ahora está disponible y se puede invoca enviando solicitudes a service.svc/<operation>; por ejemplo, service.svc/Add para la operación Add. Puede utilizarlo introduciendo la URL de servicio en la colección Scripts del control del administrador de scripts de AJAX de ASP.NET. Para obtener un ejemplo, vea Servicio AJAX sin configuración.

Ejemplo

El extremo configurado automáticamente se crea en una dirección vacía relativa a la URL base. También se puede agregar y utilizar un archivo de configuración con este enfoque. Si el archivo de configuración contiene las definiciones de extremo, estos extremos se agregan al extremo configurado automáticamente.

Por ejemplo, service.svc usa WebScriptServiceHostFactory y el directorio del servicio contiene un archivo Web.config que define un extremo para el mismo servicio mediante el elemento BasicHttpBinding de la dirección relativa de "soap". En este caso, el servicio contiene dos extremos: uno en service.svc (que responde a las solicitudes de AJAX de ASP.NET) y otro en service.svc/soap (que responde a las solicitudes SOAP).

Si el archivo de configuración define un extremo en una dirección relativa vacía y se utiliza WebScriptServiceHostFactory, se produce una excepción y el servicio no puede iniciarse.

No puede utilizar la configuración para modificar los valores en el extremo configurado automáticamente. Si se debe modificar algún valor (como una cuota del lector), no debe utilizar el enfoque sin configuración quitando el WebScriptServiceHostFactory del archivo .svc y creando una entrada de configuración para el extremo.

Si su servicio requiere el modo de compatibilidad de ASP.NET; por ejemplo, si utiliza la clase HttpContext o los mecanismos de autorización de ASP.NET, se sigue requiriendo un archivo de configuración para activar este modo. El elemento de configuración requerido es el elemento <serviceHostingEnvironment>, que se debe agregar de la siguiente manera.

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>

Para obtener más información, vea el tema Servicios WCF y ASP.NET.

La clase WebScriptServiceHostFactory es una clase derivada de ServiceHostFactory. Para obtener una explicación detallada sobre el mecanismo generador de hosts de servicio, consulte el tema Extensión del hospedaje mediante ServiceHostFactory.

Vea también

Tareas

Cómo migrar servicios web de ASP.NET con AJAX habilitado a WCF

Conceptos

Creación de servicios WCF para AJAX de ASP.NET