2011-11-21 30 views
6

Tôi có một ứng dụng thực hiện cuộc gọi dịch vụ web để nhận URL của MSI tùy thuộc vào việc máy tính của người dùng là 32 bit hay 64bit.Giá trị số nguyên bị mất trong cuộc gọi dịch vụ web

Gọi GetURLByOS mất 2 phương thức (1. chuỗi AuthenticationInfo, 2. int osBit). Khi tôi đang gỡ lỗi, tôi có thể xem thông tin xác thực. Giá trị của osBit là 8 (cho 64bit) khi gọi vào dịch vụ web. Nhưng giá trị của nó bị mất (0) khi thực sự trong dịch vụ web.

Ai đó có thể giúp tôi tìm ra lý do tại sao giá trị số nguyên bị mất không?

Cập nhật: Tôi đang đính kèm quy trình. Trong máy khách, tôi thấy giá trị 8 được chuyển vào. Trong cuộc gọi dịch vụ web, tôi thấy 0. Đây là cuộc gọi dịch vụ web SOAP. Dưới đây là các mã WSDL trên máy khách:

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

Dưới đây là các dịch vụ web thực tế:

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

BTW, khi tôi thay đổi các tham số để gõ chuỗi, nó được thông qua đúng (giá trị "8") . Chỉ khi tôi chuyển nó thành một số nguyên thì giá trị được lấy ra.

+3

bạn có bị ràng buộc/proxy lỗi thời trên máy khách không? – BrokenGlass

+1

Bạn đang sử dụng WCF? Và khi bạn nói giá trị là "mất", bạn có nghĩa là khi bạn đính kèm một trình gỡ lỗi vào dịch vụ web của bạn và đặt đối số của bạn trong một chiếc đồng hồ, nó cho thấy một giá trị 0? –

+1

Xin lỗi, nhưng điều này là gần như không thể tìm ra mà không có cái gì khác để đi về (mã, WSDL, vv) ... –

Trả lời

3

Tôi đã phát hiện ra vấn đề là gì. Trên mã WSDL (máy khách), tham số là OsBitType. Nhưng trên dịch vụ web thực tế, tham số là osBitType. Sau khi thay đổi tham số dịch vụ web thành OsBitType, nó hoạt động tốt.

Điều lạ là, điều này không xảy ra nếu thông số là một chuỗi.

1

Đối với trường hợp của tôi, sau khi cập nhật tham chiếu của dịch vụ web, nó hoạt động tốt.

Các vấn đề liên quan