Procedimiento para agregar un punto de conexión AJAX de ASP.NET sin usar la configuración
Windows Communication Foundation (WCF) le permite crear un servicio que hace que esté disponible un punto de conexión habilitado para AJAX ASP.NET al que se puede llamar desde JavaScript en un sitio web 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 puntos de conexión de AJAX de ASP.NET sin configuración, Internet Information Services (IIS) debe hospedar los servicios. Para activar un punto de conexión AJAX 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 punto de conexión de AJAX de ASP.NET para que se le pueda llamar desde JavaScript en un sitio web del cliente.
Para obtener un ejemplo en funcionamiento, consulte el servicio AJAX sin configuración.
Para obtener un esquema de la configuración de un punto de conexión AJAX ASP.NET mediante elementos de configuración, consulte Procedimiento para usar la configuración para agregar un punto de conexión AJAX ASP.NET.
Para crear un servicio WCF básico
Defina un contrato de servicio 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… }
Implemente el contrato de servicios
ICalculator
con unCalculatorService
.public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } //Other operations omitted…
Defina un espacio de nombres para las implementaciones de
ICalculator
eCalculatorService
ajustándolas en un bloque de espacios de nombres.Namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Calculator here. }
Hospedaje del servicio en Internet Information Services sin configuración
Cree un nuevo archivo denominado servicio con una extensión .svc en la aplicación. Puede modificar este archivo si agrega la información de directiva @ServiceHost adecuada para el servicio. Especifique que el WebScriptServiceHostFactory debe utilizarse en la directiva @ServiceHost para configurar automáticamente un punto de conexión AJAX ASP.NET.
<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>
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 el hospedaje en IIS, consulte Procedimiento para hospedar el servicio WCF en IIS.
Realización de llamadas al servicio
- El punto de conexión se configura en una dirección vacía relativa al archivo .svc, por lo que el servicio ahora está disponible y se puede invocar mediante el envío de 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, consulte el Servicio AJAX sin configuración.
Ejemplo
El punto de conexión 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 punto de conexión, estos puntos de conexión se agregan al punto de conexión configurado automáticamente.
Por ejemplo, service.svc usa WebScriptServiceHostFactory y el directorio del servicio contiene un archivo Web.config que define un punto de conexión para el mismo servicio mediante el elemento BasicHttpBinding de la dirección relativa de "soap". En este caso, el servicio contiene dos puntos de conexión: 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 punto de conexión 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 punto de conexión 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 necesario es el <serviceHostingEnvironment>, que debe agregarse de la siguiente forma.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>
Para obtener más información, consulte el tema Servicios WCF y ASP.NET.
La clase WebScriptServiceHostFactory es una clase derivada de ServiceHostFactory. Para obtener una explicación detallada del mecanismo de la fábrica de host de servicios, consulte el tema Extensión del hospedaje mediante ServiceHostFactory.