У меня есть приложение, которое выполняет вызов веб-службы для получения URL-адреса MSI в зависимости от того, является ли компьютер пользователя 32-разрядным или 64-разрядным.
Вызов GetURLByOS принимает 2 метода (1. string AuthenticationInfo, 2. int osBit). По мере отладки я вижу информацию об аутентификации. Значение osBit равно 8 (для 64 бит) при вызове в веб-сервис. Но его значение теряется (0), когда на самом деле в веб-сервисе.
Может кто-нибудь помочь мне понять, почему теряется целочисленное значение?
Обновление:
Я присоединяюсь к процессу. В клиенте я вижу, как передается значение 8. При вызове веб-службы я вижу 0.
Это вызов веб-службы SOAP.
Вот код WSDL на клиенте:
[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]));
}
Вот актуальный веб-сервис:
[WebMethod]
public string GetURLByOs(string eTicket, int osBitType)
{
return MyFacade.GetUrl(eTicket, osBitType);
}
Кстати, когда я изменяю параметр на тип string, он передается правильно (значение «8»). Только когда я передаю его как целое число, значение обнуляется.