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.
Czy masz nieaktualne powiązanie/proxy na kliencie przez przypadek? – BrokenGlass
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? –
Przepraszam, ale jest to prawie niemożliwe do wymyślenia bez czegoś innego do wykonania (kod, WSDL itp.) ... –