Tengo una aplicación que hace una llamada al servicio web para obtener la URL de una MSI, dependiendo de si la computadora del usuario es de 32 bits o 64 bits.El valor entero se pierde en la llamada al servicio web
La llamada GetURLByOS toma 2 métodos (1. cadena AuthenticationInfo, 2. int osBit). Mientras estoy depurando, puedo ver la información de autenticación. El valor de osBit es 8 (para 64 bits) al llamar al servicio web. Pero su valor se pierde (0) cuando en realidad está en el servicio web.
¿Alguien me puede ayudar a descubrir por qué se pierde el valor entero?
Actualización: Me estoy vinculando al proceso. En el cliente, veo que se transfiere el valor 8. En la llamada al servicio web, veo 0. Esta es una llamada de servicio web SOAP. Aquí está el código WSDL en el cliente:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://mydomain.com/product/1.0/GetURLByOs", RequestNamespace = "http://mydomain.com/product/1.0", ResponseNamespace = "http://mydomain/product/1.0", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public string GetURLByOs(string eTicket, int OsBitType)
{
object[] results = this.Invoke("GetURLByOs", new object[] {
eTicket, OsBitType});
return ((string)(results[0]));
}
Aquí es el servicio web de ésta:
[WebMethod]
public string GetURLByOs(string eTicket, int osBitType)
{
return MyFacade.GetUrl(eTicket, osBitType);
}
Por cierto, cuando cambio el parámetro de tipo cadena, que se transmite correctamente (valor "8") . Solo cuando lo paso como un entero, el valor se pone a cero.
¿tiene un enlace/proxy obsoleto en el cliente por casualidad? – BrokenGlass
¿Estás usando WCF? Y cuando dices que el valor está "perdido", ¿quieres decir que cuando adjuntas un depurador a tu servicio web y pones tu argumento en un reloj, muestra un valor de 0? –
Lo sentimos, pero esto es casi imposible de entender sin algo más que seguir (código, WSDL, etc.) ... –