2011-03-14 16 views
6

Tôi có một dịch vụ web ASMX được thiết lập để sử dụng phương thức HTTP GET. Các phương thức đơn giản nhận các tham số String và Int cơ bản đang hoạt động ok và tôi có thể gọi MyService.asmx/MethodName?Param=Value và nhận phản hồi trong XML.Phương thức với các kiểu không thể gửi được không hoạt động trong Dịch vụ web ASMX bằng cách sử dụng GET

Tuy nhiên, khi tôi có một phương pháp trong đó có một Int nullable (ví dụ: int?), tôi nhận được lỗi này:

< Method Name> Web Service tên phương pháp là không hợp lệ.

Thông báo lỗi gây nhầm lẫn, vì phương pháp này không tồn tại, không nằm trong phạm vi GET. Tôi đoán điều này là bởi vì một loại nullable là quá phức tạp để được thông qua thông qua URL, nhưng tôi không thể tìm thấy bất kỳ tài liệu hoặc SO bài viết về điều này.

Tôi đánh giá cao rằng các loại phức tạp như Danh sách hoặc lớp tùy chỉnh, v.v. sẽ không hoạt động khi sử dụng GET, nhưng tôi đã giả định rằng một ngày tháng có thể null hoặc int có thể được xử lý nguyên gốc, đơn giản bằng cách phát hiện xem nó có bị bỏ qua URL hay không. Đoán nó không phải là đơn giản!

Bất kỳ lời khuyên hay cách giải quyết nào cũng sẽ được đánh giá cao.

Xin cảm ơn, Tim

Trả lời

1

nullable int không quá phức tạp. nó sẽ tạo ra

<s:element minOccurs="1" maxOccurs="1" name="Param" nillable="true" type="s:int" /> 

trong WSDL. Hãy xem this post. Lỗi có thể là vì cái gì khác, có lẽ?

0

Bạn phải sử dụng văn bản json nếu bạn có int như vậy? đối số vì nó là một kiểu đối tượng không phải kiểu nguyên thủy. Lỗi này là sai lầm vì dịch vụ tồn tại.

nếu bạn có int? một tham số như bạn phải gửi "{'a': null}" làm nội dung cho máy chủ hoặc một số số nguyên thay vì null.

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