2010-02-17 32 views
8

Nếu tôi thêm tham chiếu web từ máy khách .NET 1.1 vào dịch vụ WCF, các phương thức proxy được tạo tại máy khách chứa thông số bổ sung kết thúc bằng hậu tố 'Được chỉ định' cho từng thông số phương thức dịch vụ, ví dụ:Các tham số bổ sung này trong Phương pháp proxy ASMX của tôi là gì?

[OperationContract] 
string HelloWorld(string foo, int bar); 

kết quả trong:

Service1.HelloWorld(string foo, bool fooSpecified, int bar, bool barSpecified); 

thông số dịch vụ của tôi là không bắt buộc nên các thông số phụ gì ở khách hàng, và làm thế nào tôi có thể thoát khỏi họ?

+0

BTW, đây không phải là một "WCF khách hàng", nhưng thay vì là một ứng dụng ASMX của một dịch vụ WCF. –

+1

Đó là một khách hàng WCF giống như cách bạn là một khách hàng ngân hàng mà không thực sự là một ngân hàng. – stovroz

Trả lời

6

Điều này là do sự khác biệt trong các cơ chế tuần tự hóa được sử dụng trong WCF và Dịch vụ web ASMX. Để tránh các tham số bổ sung, bạn phải chỉ định thuộc tính XmlSerializerFormat trên ServiceContract.

cho tiện ích đọc: http://msmvps.com/blogs/windsor/archive/2008/05/17/calling-wcf-services-from-net-1-1.aspx

+0

Một số ý nghĩa cuối cùng. Cảm ơn nhiều. – stovroz

+1

"Không tìm thấy trang". : '( –

1

.NET 1.1 Dịch vụ web không có khái niệm về giá trị rỗng để WCF tạo các thuộc tính bổ sung này cho bạn. fooSpecified = false nghĩa là foo thực sự là rỗng.

+0

foo là _input_ đối với dịch vụ, được chỉ định tại máy khách. – stovroz

-1

Bạn có lẽ cần t osay rằng các thông số của bạn được cần

[OperationContract] 
string HelloWorld([RequiredDataParameter] string foo, 
        [RequiredDataParameter] int bar); 
+2

Google chỉ có hai kết quả cho RequiredDataParameter và một trong số đó là trang này, vì vậy có thể không. – stovroz

2

Vấn đề là với các thông số của một loại giá trị khi họ được phép vắng mặt. .NET 1.1 không có cách nào để xác định điều này mà không có tham số *specified. Chúng cần phải được đặt thành true để chỉ ra rằng tham số tương ứng đang được gửi đi.

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