2011-07-06 64 views
5

Tôi đang làm việc với dịch vụ web Fedex. Họ không cung cấp URL webservice như http://hostServer/WebserviceRoot/WebServiceName.asmx. Thay vào đó, họ cung cấp tệp .wsdl.Tạo proxy dịch vụ web từ WSDL C#

Vui lòng hướng dẫn tôi tạo các lớp proxy dịch vụ web từ tệp .wsdl và thêm tham chiếu dịch vụ web vào dự án của tôi.

tôi biết để tạo ra các proxy từ wsdl như

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl 

nhưng tôi muốn biết những gì nó làm. Nó có thể tạo lớp proxy nhưng làm thế nào tôi có thể thêm tham chiếu dịch vụ web vào dự án của tôi?

+0

Tôi nghĩ bạn nên tạo một _client_ từ WSDL đó trực tiếp, không phải là Máy chủ trước. Và lệnh này dường như đang tạo một Client. Bạn sẽ gần như hoàn thành (-: –

Trả lời

11

Nếu bạn đang tạo các lớp proxy theo cách thủ công, bạn chỉ cần thêm chúng vào dự án của bạn. Cơ chế Add Web Reference trong Visual Studio được sử dụng để tự động hóa quy trình này và thêm các loại.

Tệp thực thi wsdl sẽ đọc tệp WSDL mà bạn đã tải xuống ("mywsdl.wsdl") và tạo mã proxy, ví dụ của bạn bằng ngôn ngữ C# (trong "MyProxy.cs"). Bạn có thể thêm "MyProxy.cs" vào dự án của bạn và bắt đầu instantiating trường hợp của khách hàng được tạo ra trong dự án của bạn.

5

sử dụng lệnh wsdl.exe từ dấu nhắc lệnh của studio trực quan.

ví dụ:

WSDL c:/myfile.wsdl 
1

Thường có hai cách để đối phó với các dịch vụ web. Một, như bạn đã đề cập, sử dụng URL dịch vụ web ../service.asmx. Bằng cách này, bạn chỉ cần sử dụng "Thêm tham chiếu web" trong dự án studio trực quan và bạn luôn được kết nối với dịch vụ web trực tiếp. Điều này dễ dàng hơn nhiều, nhược điểm là nếu dịch vụ web quyết định thay đổi thứ gì đó, bạn cũng cần thay đổi tham chiếu của mình. Biên dịch lại dự án và triển khai lại.

Khi bạn giữ một bản sao cục bộ của tệp wsdl, nếu chúng đưa vào trường bắt buộc trong WSDL trực tiếp, bạn vẫn được bảo vệ miễn là cơ sở mã cơ bản vẫn hoạt động với nó. Nếu bạn tự tạo lớp proxy.cs, như trong câu trả lời được chấp nhận, nó chỉ hoạt động như thêm nó thông qua studio trực quan, ngoại trừ việc bạn phải thêm lớp đó vào dự án theo cách thủ công.

Ngoài ra, tôi tin rằng bạn có thể nhận được toàn bộ url dịch vụ web từ <soap:address location="http://testsite.com/test.asmx" /> trong tệp WSDL. Thông thường, không nên sử dụng tệp WSDL cục bộ nếu ý định của bạn là cập nhật mọi thay đổi. Tôi nghi ngờ bạn sẽ có vấn đề đó vì nó là một dịch vụ web fedex, có lẽ đã đứng qua thử thách của thời gian.

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