Ho un'applicazione che effettua una chiamata al servizio web per ottenere l'URL di un MSI a seconda che il computer dell'utente sia 32 bit o 64 bit.Il valore intero viene perso nella chiamata al servizio web
La chiamata GetURLByOS richiede 2 metodi (1. stringa AuthenticationInfo, 2. int osBit). Mentre eseguo il debug, posso vedere le informazioni di autenticazione. Il valore di osBit è 8 (per 64 bit) quando si chiama nel servizio web. Ma il suo valore è perso (0) quando effettivamente nel servizio web.
Qualcuno può aiutarmi a capire perché il valore intero è stato perso?
Aggiornamento: Sono collegato al processo. Nel client, vedo passare il valore 8. Nella chiamata al servizio web, vedo 0. Questa è una chiamata al servizio web SOAP. Ecco il codice WSDL sul client:
[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]));
}
Ecco il servizio di web attuale:
[WebMethod]
public string GetURLByOs(string eTicket, int osBitType)
{
return MyFacade.GetUrl(eTicket, osBitType);
}
BTW, quando cambio il parametro di tipo stringa, viene passata correttamente (valore "8") . È solo quando lo passo come numero intero che il valore è azzerato.
hai un binding/proxy obsoleto sul client per caso? – BrokenGlass
Stai usando WCF? E quando dici che il valore è "perso", intendi che quando colleghi un debugger al tuo servizio web e metti il tuo argomento in un orologio, mostra un valore di 0? –
Scusa, ma è quasi impossibile capire qualcos'altro (codice, WSDL, ecc.) ... –