¿Porque al crear el cliente para consumir mi WCF WebService me cambia la firma del metodo que quiero usar?
-
jueves, 28 de junio de 2012 16:52
Hola. Estoy aprendiendo WCF.
Hice un WebService con un metodo que tiene la siguiente firma:
void receivePositionReport(string AccountId, decimal MtId, decimal PollId, decimal MapLatitude, decimal MapLongitude, decimal Age, DateTime PollTimeStamp);
pero al crear mi Cliente para utilizar el web service, me aparece con la siguiente firma
void receivePositionReport(string AccountId, decimal MtId, bool MtIdSpecified, decimal PollId, bool PollIdSpecified, decimal MapLatitude, bool MapLatitudeSpecified, decimal MapLongitude, bool MapLongitudeSpecified, decimal Age, bool AgeSpecified, DateTime PollTimeStamp, bool PollTimeStampSpecified);
Es decir, me cambia la cantidad de valores que debo pasar al web service y agrega un valor boleano para cada valor.
Gracias.
Todas las respuestas
-
sábado, 30 de junio de 2012 12:02
hola
http://social.msdn.microsoft.com/Forums/da-DK/wcf/thread/a1bca402-cbe1-4233-8eb3-ce01b8cefcd4
una duda, los parametros del contrato sond el tipo int, decimal, o son del tipo int? y decimal?
porque el xxSpecified aparece para indicar si se especifica ese parametro, pero me sonaria logico que lo hiciera si se definio como nullable
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
martes, 03 de julio de 2012 22:37
Hola.
los parametros son de tipo int y decimal. Agregue la etiqueta IsRequired=true de la siguiente manera en mi DataContract, pero sigue igual.
[DataMember(IsRequired=true)]
public decimal theExternalId;
[DataMember(IsRequired = true)]
public string theAccountId;
[DataMember(IsRequired = true)]
public decimal theMtId;
[DataMember(IsRequired = true)]
public decimal thePollId;
[DataMember(IsRequired = true)]
public decimal theMapLatitude;
[DataMember(IsRequired = true)]
public decimal theMapLongitude;
[DataMember(IsRequired = true)]
public decimal theAge;
[DataMember(IsRequired = true)]
public DateTime thePollTimeStamp; -
domingo, 22 de julio de 2012 16:16
Si tu webservice en su definición indica que los argumentos, propiedades, etc son minocurs=0 pero no indica que son nillable=true para los tipos nulos entonces es cuando el svcutil de .net al generarte el cliente te declara dos propiedades una la del tipo básico(bool, short, int, ...) y otro de tipo booleano que son los specified indicando si es nulo o no. Por lo tanto, tu wdsl debería de tener los nillables a true para evitar los especified. Y la manera de corregirlo es con IsRequired=true.- Marcado como respuesta Perdido09 lunes, 23 de julio de 2012 14:21

