lunes, 19 de diciembre de 2011

Parámetros adicionales Specified en WCF desde .Net 1.1

Añadiendo un Web Reference a un servicio WCF en 4.0 desde un proyecto en Visual Studio 2003 en .Net 1.1, observé que se duplicaban los parámetros de los métodos del servicio WCF al hacer la instancia. Los parámetos extra tenían el mismo nombre pero con el sufijo SPecified y eran de tipo Bool. Observando la referencia al método, efectivamente contenía el doble de parámetros.

public string NOMBRE_METODO(int param1, [System.Xml.Serialization.XmlIgnoreAttribute()] bool param1Specified, int param2, [System.Xml.Serialization.XmlIgnoreAttribute()] bool param2Specified) {
object[] results = this.Invoke("NOMBRE_METODO", new object[] {
param1,
param1Specified,
param2,
param2Specified});
return ((string)(results[0]));
}

El problema se debía a los diferentes mecanismos de serialización que utiliza WCF y los servicios ASMX. Los servicios en .Net 1.1 no tienen el concepto de nulo y añaden esos parámetros extra para especificar la opcionalidad de los mismos. La solución al problema es bastante simple, basta con añadir el atributo

[XmlSerializerFormat]
al contrato que estamos utilizando.

No hay comentarios:

Publicar un comentario