Puedo ver el objeto en Fiddler pero el objeto no está deserializando en mi extremo. ¿Alguien ha visto esto antes?Las propiedades en un objeto de respuesta después de una llamada al servicio web son nulas
Respuesta
La única razón por la que puedo pensar es en una falta de coincidencia de contrato. Aunque es extraño que no se genere ningún error de validación. ¿Estás utilizando un cliente generado a partir del WSDL correcto? ¿Es un cliente de WCF o uno de SOAP? El primero hace la validación, estoy seguro, pero los desajustes del esquema pueden pasar por el segundo.
Esto ocurre cuando se genera la clase de proxy desde la herramienta wsdl y cuando se agrega como una referencia de servicio a través de la GUI de VS2010. Este es un cliente SOAP. – Sean
Use svcutil.exe, no wsdl.exe. O simplemente use "Agregar referencia de servicio" y apunte al WSDL o metadata. –
Tengo exactamente el mismo problema que este: los espacios de nombres que veo en la respuesta WSDL y XML (en Fiddler) son exactamente los mismos. También utilizando un cliente SOAP. El objeto de respuesta es un contenedor simple alrededor de una matriz genérica (desde el servidor (Java) que está anotado con @XmlElementRefs ({@ XmlElementRef (type = Class1.class, ...}) el XML pasó a C# cliente se ve bien como:
"La respuesta es nula" o "La respuesta contiene nulos" o "La solicitud es nula" o "La solicitud contiene nulo" casi siempre significa que tiene una discrepancia en el espacio de nombres. Por ejemplo, la respuesta puede contener:
<response xmlns="http://foo.com"/>
pero debe ser, de hecho
<response xmlns="http://bar.com"/>
En este caso, null serán recibidos.
SÍ. ! Gracias. – mikey
Cada vez que esto me sucede a mí, es porque necesito actualizar mis referencias de servicio. Pruébalo y cuéntame qué sucede :)
gracias por la respuesta, pero créanme, he eliminado y recreado alrededor de mil veces = ( ). Sin embargo, es bastante posible que me pierda algo igualmente simple o estoy cometiendo un error estúpido en otro lugar (mi primera aplicación C#) Lo he intentado con VS 2010 y SharpDevelop, todo en vano ... – earcam
Ok, te lo agradecería desde que me lo preguntaste la pregunta si podría hacerlo una vez más, por favor. Es decir. actualice la referencia del servicio, en lugar de eliminar y volver a crear. Suponiendo que no funciona, sería ideal ver la definición/contrato para el objeto (s) y el método involucrados :) –
He actualizado en SharpDevelop y todo era igual que antes. Cuando actualicé la referencia de WebService en VS Express 2010, se modificó el espacio de nombres C# prefijando el espacio de nombres predeterminado del proyecto a la referencia del servicio (como DefaultNamespace.ServiceReference). Ejecutar desde cualquiera de los resultados IDE en el mismo objeto de respuesta con campos nulos. – earcam
Lo resolvió ... o al menos tiene una solución alternativa. En el código de Java, @XmlElementRefs y @XmlElementRef deberían haber sido @XmlElements y @XmlElement respectivamente (además del atributo "type", necesitaba un atributo "name").
Supongo que si hubiera publicado esto como una nueva pregunta con una etiqueta Java, así como C# y servicios web, algunos Stack-Eyed Stalowoverflower habrían detectado este error de colegial.
Tuve un problema similar que resolví comprobando el valor del pedido en Reference.cs. [System.Xml.Serialization.XmlElementAttribute (Order = 0)]
El orden de los parámetros de devolución ha cambiado, pero al actualizar mi referencia de servicio en Visual Studio no cambié el valor de "Orden".
Compruebe que los parámetros devueltos en Fiddler/SoapUI sean los mismos que en su clase generada por proxy.
Tuve un caso similar en el que creé un cliente a través de SVCUTIL/Service Reference de VS. La respuesta se recibió con éxito con los datos correctos (confirmados mediante el método IClientMessageInspector.AfterReceiveReply), sin embargo, los valores en el nivel del objeto no se completaron. No hubo errores de-serialización (confirmados mediante la salida system.diagnostics)
El problema era doble:
1) Ciertos objetos fueron nombrados exactamente como sus tipos, pero tenían diferentes espacios de nombres de sus tipos. Esto parece haber confundido al generador de proxy al asignar el parámetro de espacio de nombres (en la anotación System.Xml.Serialization.XmlElementAttribute) de la clase al del objeto
2) El parámetro order (en System.Xml. Serialization.XmlElementAttribute anotación) de las propiedades no era necesario y también el parámetro de espacio de nombres faltaba
así a partir de: [System.Xml.Serialization.XmlElementAttribute (IsNullable = true, Orden = 0)]
a: [ System.Xml.Serialization.XmlElementAttribute (IsNullable = true, Namespace = "http: //www.whathevernamespaceiscorrect.com ")]
Básicamente, en el proxy generado necesité corregir el espacio de nombres de la clase al especificado en el tipo, y reemplazar el parámetro de orden con el parámetro de espacio de nombres configurándolo en el espacio de nombres correcto según el WSDL
yo tenía el mismo problema, y como sugiere el problema de espacio de nombres fue el cause.However raíz, mi clase de proxy ha anidado clases y larga cadena de espacio de nombres anidados.
era confuso para identificar el espacio de nombres correcto aplicar en el código Cs para la clase de proxy. Aquí, describo cómo averiguar el espacio de nombres que se requiere para ser actualizado en el proxy del cliente.
Lo que hice fue interceptar la solicitud en la clase ClientMessageInspector, método AfterReceiveReply (permite la inspección o modificación de un mensaje después de que se recibe un mensaje de respuesta pero antes de volverlo a la aplicación cliente). Verificó el espacio de nombres del objeto que devuelve nulo en Response utilizando XMLDocument. Actualicé la clase de proxy con el espacio de nombres recuperado de XML. Después de hacer los cambios, los objetos no fueron nulos en respuesta.
public class MyMessageInspector : IClientMessageInspector
{
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message request, object correlationState)
{
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms);
request.WriteMessage(writer);
writer.Flush();
ms.Position = 0;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ms);
this.ReadMessage(xmlDoc);
ms = new MemoryStream();
xmlDoc.Save(ms);
ms.Position = 0;
XmlReader reader = XmlReader.Create(ms);
Message newMessage = Message.CreateMessage(reader, int.MaxValue, request.Version);
newMessage.Properties.CopyProperties(request.Properties);
request = newMessage;
}
private void ReadMessage(XmlDocument xmlDoc)
{
XmlNode v1 = xmlDoc.GetElementsByTagName("XPAth");
//Actual Namespace in XML, which should be used in Proxy Class
string namespaceURIForObjectInXML = v1.NamespaceURI;
}
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
{
}
}
Asegúrese de que la definición/especificación coincida con la salida. Compare el WSDL (en el navegador) y la respuesta (en SOAP-UI, Fiddler), p.
- WSDL utiliza caso camello (lastName) y la respuesta
- utiliza guiones (last_name).
- 1. Cualquier función de PHP que quitará las propiedades de un objeto que son nulas?
- 2. El cliente RestSharp devuelve todas las propiedades como nulas al deserializar la respuesta JSON
- 3. Knockout con ko.toJSON - cómo ignorar las propiedades que son nulas
- 4. XmlSerializer. Mantener las propiedades de cadena nulas?
- 5. Añadir encabezado de respuesta al servicio web JAX-RS
- 6. Sesión "Suplantación" en una llamada al servicio web
- 7. XML desde una llamada de servicio web
- 8. Al pasar un objeto de excepción a un servicio web
- 9. Las instancias de IBOutlet son (nulas) después de cargar desde NIB
- 10. ¿Es posible realizar una llamada al servicio web dentro de un informe de servicios de informes?
- 11. Patrón de objeto nulo para evitar las comprobaciones nulas?
- 12. ¿Cuáles son las diferencias entre un servicio web y un servicio de Windows?
- 13. UIViewController IBOutlets son nulas
- 14. Eliminando propiedades nulas de Json en MVC Web Api 4 Beta
- 15. Retorno todas las propiedades de un objeto en Objective-C
- 16. Ayudante para copiar propiedades no nulas de un objeto a otro? (Java)
- 17. llamada dominios con jQuery jsonp al servicio web ASP.NET
- 18. ¿Cómo encontrar las propiedades de un objeto?
- 19. ASP.NET JSON servicio web Respuesta formato
- 20. La llamada al servicio web devuelve el error 500
- 21. "La solicitud falló con una respuesta vacía" al llamar a un servicio web
- 22. Llamada al servicio web WCF: ¿qué excepción (s) atrapar?
- 23. Se llama a UIWebView webViewDidStartLoad con la solicitud cuyas propiedades son nulas
- 24. Devolver JSON envuelto en una función de devolución de llamada desde un servicio web WCF REST
- 25. ¿Acceso de solo lectura a la sesión en una llamada al servicio web?
- 26. Cómo acelerar las llamadas al servicio web en una aplicación web Java
- 27. REST - respuesta del servicio web - tipo mime?
- 28. Cómo configurar DateTime.Kind para todas las propiedades de DateTime en un objeto usando Reflection
- 29. .net ejemplo de uso de certificados de cliente en la llamada al servicio web?
- 30. Detectando adiciones a las propiedades de un objeto Javascript
Tengo el mismo problema y actualmente estoy tirando de mi cabello (especialmente cuando parece que no hay forma de depurar el código M $ C# que deserializa el WS). – earcam