Foros del Web » Programación para mayores de 30 ;) » .NET »

Consumir servicio WCF desde petición AJAX Jquery

Estas en el tema de Consumir servicio WCF desde petición AJAX Jquery en el foro de .NET en Foros del Web. Hola buenos días a toda@s, Estoy intentando consumir un método proporcionado por un servicio WCF, mediante una llamada Ajax de jQuery, pero siempre obtengo el ...
  #1 (permalink)  
Antiguo 09/04/2017, 03:38
Avatar de Ratus-BROWN  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 169
Antigüedad: 15 años, 9 meses
Puntos: 8
Consumir servicio WCF desde petición AJAX Jquery

Hola buenos días a toda@s,


Estoy intentando consumir un método proporcionado por un servicio WCF, mediante una llamada Ajax de jQuery, pero siempre obtengo el error de que la petición no encuentra el servicio.

Lo tengo montado todo en una solución de VS2015, por un lado esta la definición del servicio en un proyecto donde están definidos el ServiceContract, OperationContract, DataContract y DataMember, y luego el servicio Service1.svc que implementa los métodos definidos en el contrato. Por otro lado tengo un proyecto en ASP.NET que es el que actúa como cliente (consume el servicio), desde este proyecto utilizo una petición Ajax que la invoca un botón, esta petición lo que hace es intentar ejecutar un método proporcionado por el servicio.

Mi llamada AJAX:

Código Javascript:
Ver original
  1. $("#LlamadaAjaxServicio").click(function() {
  2.  
  3.                 $.ajax({
  4.                     type: "POST",
  5.                     url: "Service1.svc/ObtenerDatos", // Location of the service
  6.                     data: '{"dni": "' + 7 + '"}',
  7.                     crossDomain: true,
  8.                     contentType: "application/json", ver
  9.                     dataType: "json",
  10.                     processdata: true,
  11.                     success: function (msg) {
  12.  
  13.                         $("#label").val(msg.d.Name);
  14.  
  15.                     },
  16.                     error: function () {
  17.  
  18.                         alert("error");
  19.  
  20.                     }
  21.                 });
  22.      
  23.             });
  24.  
  25.         });


Código C:
Ver original
  1. [ServiceContract]
  2.     public interface IDatos
  3.     {
  4.  
  5.         [OperationContract]
  6.         Datos ObtenerDatos(int dni);
  7.  
  8.      
  9.     }
  10.  
  11.  
  12.     // Use a data contract as illustrated in the sample below to add composite types to service operations.
  13.     [DataContract]
  14.     public class Datos
  15.     {
  16.        
  17.  
  18.         [DataMember]
  19.         public int Dni { get; set; }
  20.  
  21.         [DataMember]
  22.         public string Name { get; set; }
  23.  
  24.         [DataMember]
  25.         public string Surname { get; set; }
  26.  
  27.     }


Service1.svc

Código C:
Ver original
  1. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  2.     public class Service1 : IDatos
  3.     {
  4.        
  5.         public Datos ObtenerDatos(int dni)
  6.         {
  7.             Datos dt = null;
  8.  
  9.             dt = new Datos();
  10.  
  11.             dt.Dni = dni;
  12.             dt.Name = "Nombre";
  13.             dt.Surname = "Apellido";
  14.  
  15.             return dt;
  16.  
  17.         }
  18.     }


El problema que tengo es que no encuentra el servicio. ¿Estoy construyendo más la url de la petición? ¿Podría alguien orientarme un poco?


Gracias.
Saludos
__________________
Disturb_downstairs (....we are cooking!)
  #2 (permalink)  
Antiguo 09/04/2017, 07:08
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 10 meses
Puntos: 52
Respuesta: Consumir servicio WCF desde petición AJAX Jquery

Si el servicio WCF esta en un proyecto diferente de la aplicacion ASP.NET seguramente lo estas levantando en un puerto diferente.

Podrias mostrar un screenshot del solution explorer, y de las propiedades del proyecto que contiene el servicio?
  #3 (permalink)  
Antiguo 11/04/2017, 14:38
Avatar de Ratus-BROWN  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 169
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Consumir servicio WCF desde petición AJAX Jquery

Finalmente opté por hacer una fachada REST, es otra forma de implementar un servicio. En cuanto al servicio WCF, curiosamente cuando el cliente (.aspx) y el servicio están en el mismo proyecto puedo hacer llamadas directas desde el AJAX de jQuery, los problemas vienen cuando están separados en diferentes proyectos o en diferentes soluciones.

Una forma de solucionar rápido el problema es utilizando una pagina de apoyo .aspx que sea la url del Ajax, y ya el codebehind de esta página puede hacer la invocación de los métodos del servicio. El resultado de los cálculos del codehind de esta página es el resultado que recoge el 'success' de Ajax.

Puede que haya que configurar alguna cosa en el WebConfig. También hay algunos problemas con el CORS de los navegadores, que hay que desactivar...

Al ser tantas cosas decidí hacerlo de otra forma. Pero aún así más adelante retomaré este tema para ver como poder solventarlo.

:)
__________________
Disturb_downstairs (....we are cooking!)

Etiquetas: ajax, asp.net, jquery, servicios, wcf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:38.