Целочисленное значение теряется при вызове веб-службы - PullRequest
6 голосов
/ 22 ноября 2011

У меня есть приложение, которое выполняет вызов веб-службы для получения 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»). Только когда я передаю его как целое число, значение обнуляется.

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Я выяснил в чем проблема. В (клиентском) WSDL-коде параметром является OsBitType. Но на реальном веб-сервисе параметр является osBitType. После изменения параметра веб-службы на OsBitType он работает нормально.

Странно то, что это не происходит, если параметр является строкой.

1 голос
/ 19 сентября 2013

В моей ситуации после обновления ссылки на веб-сервис, он работает нормально.

...