Tạo proxy dịch vụ web trong Visual Studio từ tệp WSDL


101

Ứng dụng của tôi cần kết nối với một dịch vụ web chưa có định nghĩa WSDL trực tuyến. Tuy nhiên, các nhà phát triển đã cung cấp cho tôi một tệp WSDL.

Với WSDL Visual Studio công cộng có thể tạo mã này cho tôi bằng cách sử dụng trình hướng dẫn Tham chiếu Dịch vụ. Nhưng nó dường như không hoạt động nếu không có WSDL công khai.

Làm cách nào để tạo mã để nói chuyện với dịch vụ web này bằng tệp WSDL này?

Câu trả lời:


116

Hãy thử sử dụng WSDL.exe và sau đó đưa tệp đã tạo (.cs) vào dự án của bạn.

Kích hoạt dấu nhắc Lệnh Visual Studio (trong studio / công cụ trực quan trong menu bắt đầu) sau đó nhập

>wsdl.exe [path To Your WSDL File]

Điều đó sẽ tạo ra một tệp mà bạn sao chép / di chuyển và đưa vào dự án của mình. Tệp đó chứa một lớp là proxy cho thiết bị của bạn, Kích hoạt một phiên bản của lớp đó và nó sẽ có thuộc tính URL mà bạn có thể đặt nhanh chóng và một loạt các phương thức mà bạn có thể gọi. Nó cũng sẽ tạo ra các lớp cho tất cả / bất kỳ đối tượng phức tạp nào được chuyển qua giao diện dịch vụ.


2
Cảm ơn! Và bạn có thể sử dụng tham số / o cho đường dẫn của tệp đã xuất. ví dụ> wsdl.exe example.com/service.wsdl / o: C: \ Users \ X \ Desktop
gkonuralp

2
và tùy chọn thêm một không gian tên theo cách thủ công, bao gồm tất cả các lớp, để tránh xung đột với các tệp tương tự được tạo.
Blue Clouds

138

Sử dụng WSDL.exe không phù hợp với tôi (đã cho tôi lỗi về loại bị thiếu), nhưng tôi có thể nhấp chuột phải vào dự án của mình trong VS và chọn "Thêm tham chiếu dịch vụ". Tôi đã nhập đường dẫn đến tệp wsdl trong trường Địa chỉ và nhấn "Bắt đầu". Điều đó dường như có thể tìm thấy tất cả các loại thích hợp và thêm các lớp trực tiếp vào dự án của tôi.


3
Đối mặt với cùng một kịch bản và đề xuất của bạn đã giúp tôi rất nhiều thất vọng và có lẽ là một số sợi tóc. Đại diện rất xứng đáng đã được trao cho bạn. (Kết quả là bạn đã nhận được +100 trên tất cả các trang web :))
Shadow Wizard is Ear For You

Tôi cố gắng này, nhập khẩu tập tin, nhưng tôi không thể nhìn thấy trong mã của các lớp học của tôi
guiomie

1
Tôi đã thử phương pháp này bằng MSVC 2015 nhưng nó từ chối xử lý tệp wsdl bằng URL. Vì vậy, tôi đã sử dụng phương pháp mô tả bởi Andrew M.
Hermann

1
Tôi đã thử điều này từ một máy tính phát triển không có quyền truy cập dịch vụ web. Mặc dù tệp .wsdl là tệp cục bộ, nó đã cố gắng kết nối dịch vụ khi tôi nhấn "Go". Vì vậy, tôi đã không thể thêm tài liệu tham khảo. Trong tình huống này, tôi nghĩ giải pháp của Andrew M. nên được ưu tiên hơn. Nó hoạt động tốt.
gkonuralp

@jeffaudio tôi đang gặp sự cố tương tự Tôi có thể thêm tham chiếu dịch vụ cho dự án web nhưng sử dụng wsdl.exe, tôi không thể tạo tệp proxy. Bất kì lời đề nghị nào ..???
prakash r

15

Lưu ý thêm: nếu bạn có tất cả các tệp cục bộ (không chỉ tệp wsdl mà cả tệp xsd), bạn có thể gọi wsdl.exe theo cách đó:

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

Bằng cách đó wsdl.exe có thể giải quyết cục bộ tất cả các phụ thuộc và tạo lớp proxy một cách chính xác.

Có thể nó sẽ giúp ai đó tiết kiệm thời gian - nó giải quyết lỗi "thiếu loại" khi dịch vụ không khả dụng trực tuyến.



2

Có một Tài liệu Microsoft để tạoWCF proxy từ dòng lệnh.

Bạn có thể tìm thấy bản sao cục bộ của mình wsdl.exeở một vị trí tương tự như sau: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools( Tìm hiểu thêm tại đây )

Cuối cùng của bạn Commandsẽ trông giống như sau:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl

1

lưu tệp trên đĩa của bạn và sau đó sử dụng sau đây làm URL:

file://your_path/your_file.wsdl

Đây là tệp duy nhất phù hợp với tôi vì tệp được đề cập cần được tải xuống sau khi xác thực trước. Cảm ơn!
Kevin Radcliffe

-1

Vì URL ràng buộc thực sự cho dịch vụ web nằm trong tệp, bạn có thể thực hiện các bước đơn giản sau từ máy cục bộ của mình:

1) Lưu tệp vào máy tính cục bộ của bạn, ví dụ:

C:\Documents and Settings\[user]\Desktop\Webservice1.asmx

2) Trong Visual Studio Nhấp chuột phải vào dự án của bạn> Chọn Thêm Tham chiếu Web, Một hộp thoại sẽ mở ra.

3) Trong Hộp URL Sao chép vị trí tệp cục bộ ở trên C: \ Documents and Settings [user] \ Desktop \ Webservice1.asmx, Nhấp vào Tiếp theo

4) Bây giờ bạn sẽ thấy các chức năng xuất hiện, hãy chọn tên của bạn để tham khảo, Bấm thêm tham chiếu

5) Bạn đã hoàn thành! bạn có thể bắt đầu sử dụng nó như một không gian tên trong ứng dụng của mình, đừng lo lắng rằng bạn đã sử dụng một tệp cục bộ, bởi vì dù sao thì URL thực của dịch vụ cũng nằm trong tệp ở phần Binding


2
Điều này đã được đề xuất trong câu trả lời hiện có này tại sao lại lặp lại?
Shadow Wizard là Ear For You

Tại sao tập tin asmx khi câu hỏi là về wsdl?
Blue Clouds
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.