Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el ejemplo SimpleAjaxService se muestra cómo usar Windows Communication Foundation (WCF) para crear un servicio básico ASP.NET de JavaScript asincrónico y XML (AJAX) (un servicio al que puede acceder mediante código JavaScript desde un cliente de explorador web). El servicio usa el WebGetAttribute atributo para asegurarse de que el servicio responde a las solicitudes HTTP GET y está configurado para usar el formato de datos de notación de objetos JavaScript (JSON) para las respuestas.
La compatibilidad con AJAX en WCF está optimizada para su uso con ASP.NET AJAX a través del ScriptManager
control . Para obtener un ejemplo de uso de WCF con ASP.NET AJAX, consulte los ejemplos de AJAX.
Nota:
El procedimiento de configuración y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.
En el código siguiente, el WebGetAttribute atributo se aplica a la Add
operación para asegurarse de que el servicio responde a las solicitudes HTTP GET. El código usa GET para simplificar (puede construir una solicitud HTTP GET desde cualquier explorador web). También puede usar GET para habilitar el almacenamiento en caché. HTTP POST es el valor predeterminado en ausencia del WebGetAttribute
atributo .
[ServiceContract(Namespace = "SimpleAjaxService")]
public interface ICalculator
{
[WebGet]
double Add(double n1, double n2);
//Other operations omitted…
}
El archivo .svc de ejemplo usa WebScriptServiceHostFactory, que agrega un WebScriptEndpoint punto de conexión estándar al servicio. El punto de conexión se configura en una dirección vacía relativa al archivo .svc. Esto significa que la dirección del servicio es http://localhost/ServiceModelSamples/service.svc
, sin sufijos adicionales que no sean el nombre de la operación.
<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>
WebScriptEndpoint está preconfigurado para que el servicio sea accesible desde una página de cliente de AJAX de ASP.NET. La siguiente sección de Web.config se puede usar para realizar cambios de configuración adicionales en el punto de conexión. Se puede quitar si no se requieren cambios adicionales.
<system.serviceModel>
<standardEndpoints>
<webScriptEndpoint>
<!-- Use this element to configure the endpoint -->
<standardEndpoint name="" />
</webScriptEndpoint>
</standardEndpoints>
</system.serviceModel>
WebScriptEndpoint establece el formato de datos predeterminado para el servicio en JSON en lugar de XML. Para invocar el servicio, vaya a http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200
después de completar los pasos de configuración y compilación que se muestran más adelante en este tema. Esta funcionalidad de prueba está habilitada por el uso de una solicitud HTTP GET.
La página web del cliente SimpleAjaxClientPage.aspx contiene ASP.NET código para invocar el servicio cada vez que el usuario hace clic en uno de los botones de operación de la página. El ScriptManager
control se utiliza para crear un proxy al servicio que sea accesible a través de JavaScript.
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="service.svc" />
</Services>
</asp:ScriptManager>
Se crean instancias del proxy local y se invocan operaciones mediante el código JavaScript siguiente.
// Code for extracting arguments n1 and n2 omitted…
// Instantiate a service proxy
var proxy = new SimpleAjaxService.ICalculator();
// Code for selecting operation omitted…
proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null);
Si la llamada al servicio se realiza correctamente, el código invoca al onSuccess
controlador y el resultado de la operación se muestra en un cuadro de texto.
function onSuccess(mathResult){
document.getElementById("result").value = mathResult;
}