2011-11-21 8 views
6

Mam aplikację, która wykonuje wywołanie usługi internetowej, aby uzyskać adres URL MSI w zależności od tego, czy komputer użytkownika jest 32-bitowy czy 64-bitowy.Wartość całkowita jest tracona w wywołaniu usługi sieciowej

Wywołanie GetURLByOS przyjmuje dwie metody (1. string AuthenticationInfo, 2. int osBit). Podczas debugowania widzę informacje o uwierzytelnieniu. Wartość osBit wynosi 8 (dla 64-bitów) podczas wywoływania w serwisie internetowym. Ale jego wartość jest tracona (0), gdy faktycznie w serwisie internetowym.

Czy ktoś może mi pomóc dowiedzieć się, dlaczego wartość całkowita została utracona?

Aktualizacja: Załączam do procesu. W kliencie widzę, że wartość 8 jest przekazywana. W wywołaniu usługi sieciowej widzę 0. To jest wywołanie usługi sieciowej SOAP. Oto kod WSDL na kliencie:

[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])); 
     } 

Oto rzeczywisty serwis internetowy:

[WebMethod] 
     public string GetURLByOs(string eTicket, int osBitType) 
     { 
      return MyFacade.GetUrl(eTicket, osBitType); 
     } 

BTW, kiedy zmienić parametr wpisać ciąg znaków, zostanie ona prawidłowo przeszły (wartość „8”) . Dopiero gdy przekazuję go jako liczbę całkowitą, wartość jest wyzerowana.

+3

Czy masz nieaktualne powiązanie/proxy na kliencie przez przypadek? – BrokenGlass

+1

Czy używasz WCF? A kiedy mówisz, że wartość jest "zagubiona", masz na myśli to, że kiedy podłączasz debugger do swojej usługi internetowej i umieszczasz argument w zegarku, pokazuje on wartość 0? –

+1

Przepraszam, ale jest to prawie niemożliwe do wymyślenia bez czegoś innego do wykonania (kod, WSDL itp.) ... –

Odpowiedz

3

Dowiedziałem się o co chodzi. W kodzie WSDL (klienta) parametrem jest OsBitType. Ale w rzeczywistym serwisie internetowym parametrem jest osBitType. Po zmianie parametru usługi internetowej na OsBitType, działa dobrze.

Dziwne jest to, że nie występuje, jeśli parametr jest ciągiem.

1

Dla mojej sytuacji, po aktualizacji odniesienia do usługi internetowej, działa poprawnie.