Cách tạo tham chiếu dịch vụ chỉ với tệp wsdl vật lý


123

Tôi đã tạo và sử dụng các dịch vụ web trong nhiều năm và luôn có thể sử dụng Visual Studio để tạo tham chiếu dịch vụ từ máy khách. Tôi có một dịch vụ của bên thứ ba mà tôi cần làm việc và họ từ chối mở bảo mật để tôi có thể xem wsdl và làm tham chiếu dịch vụ. Đó là một dịch vụ công khai nên tôi không thấy cần đến mức độ bảo mật đó nhưng nó là như thế nào.

Tôi biết đây là một câu hỏi n00b và tôi rất xấu hổ khi hỏi nó, nhưng làm cách nào để tạo thông tin Tham chiếu Dịch vụ tương đương trong ứng dụng khách của tôi khi tất cả những gì tôi có sẵn cho tôi là bản sao thực của wsdl mà khách hàng đã gửi email cho tôi? Web.config thay đổi, lớp đối tượng trên dữ liệu SOAP, v.v. Giống như với Tham chiếu dịch vụ tự động, tôi chỉ muốn mở một kết nối với dịch vụ và bắt đầu sử dụng nó với các đối tượng đã xác định.

Dịch vụ của bên thứ ba không phải là WCF theo như tôi có thể nói mà là SOAP. Tôi đang sử dụng VS 2010 btw. Cảm ơn trước, Ken


Câu trả lời:


180

Đây có thể là phương pháp dễ nhất

  • Nhấp chuột phải vào dự án và chọn "Thêm Tham chiếu Dịch vụ ..."
  • Trong hộp Địa chỉ:, nhập đường dẫn vật lý (C: \ test \ project ....) của wsdl đã tải xuống / Sửa đổi.
  • Nhấn Go

11
Nếu bạn sử dụng "Copy as Path", hãy bỏ dấu ngoặc kép.
O. Jones

Khi lưu wsdl để chuyển cho người khác, "xem nguồn" của wsdl từ webservice trong chrome đã cho tôi một wsdl đang hoạt động, trong khi IE11 thì không. YMMV.
archangel76

68

Có hai cách để giải quyết vấn đề này. Bạn có thể sử dụng IDE để tạo WSDL hoặc bạn có thể làm điều đó thông qua dòng lệnh.

1. Để tạo nó qua IDE:

Trong ngăn trình khám phá giải pháp, nhấp chuột phải vào dự án mà bạn muốn thêm Dịch vụ vào:

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể nhập đường dẫn đến WSDL dịch vụ của mình và nhấn go:

nhập mô tả hình ảnh ở đây

2. Để tạo nó qua dòng lệnh:

Mở Dấu nhắc lệnh VS 2010 (Chương trình -> Visual Studio 2010 -> Công cụ Visual Studio)
Sau đó thực thi:

WSDL /verbose C:\path\to\wsdl

WSDL.exe sau đó sẽ xuất ra tệp .cs để bạn sử dụng.

Nếu bạn có các phụ thuộc khác mà bạn nhận được với tệp, chẳng hạn như xsd, hãy thêm chúng vào danh sách đối số:

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

Nếu bạn cần đầu ra VB, hãy sử dụng /language:VBthêm vào /verbose.


Tôi nhận được 'Không thể nhập ràng buộc' blah 'từ không gian tên' blahURL 'và Không thể nhập hoạt động' SomeRequest ', Phần tử' xxx 'bị thiếu. Điều này có nghĩa là họ cần cung cấp cho tôi thêm một số tệp hỗ trợ hay họ đã khóa bảo mật quá kỳ lạ đến mức tôi không thể làm gì?
kfoster

Chắc chắn có vẻ như bạn đang thiếu phụ thuộc. Mở WSDL và nhìn ở trên cùng. Nếu bạn thấy các dòng có một importtrong đó, theo sau là một schemaLocation trỏ đến một đường dẫn xsd, bạn cũng sẽ cần các tệp xsd đó.
Lynn Crumble 3/10/12

Cảm ơn cho phản ứng. Tôi có một email chưa trả lời với khách hàng để xem liệu tôi có thể nhận được các lần nhập xsd cần thiết hay không. Tuy nhiên, thật khó chịu, khi thực hiện đúng, tôi chỉ cần đưa một URL vào hộp thoại ServiceReference, nhấn một nút và viola! Tôi còn khoảng 3 dòng mã nữa để gọi một phương thức dịch vụ. Toàn bộ quá trình mất khoảng 5 phút. Nhưng tôi đã làm việc với ứng dụng khách này trong nhiều tuần và chẳng đi đến đâu vì nhân viên bảo mật của họ sẽ không mở quyền truy cập vào bất kỳ định nghĩa dịch vụ nào qua web.
kfoster

Đó là thô. Tôi hiện đang chờ kết nối vpn cho một dự án, bản thân tôi. May mắn thay, họ đã đưa cho tôi tài liệu wsdl và xsd đi kèm trước thời hạn. Vì vậy, bạn đã tìm thấy những nhập khẩu trong wsdl?
Lynn Cr sụp đổ

Đúng. Hóa ra đối với 4 dịch vụ họ đã cho tôi wsdl cho 2 trong số đó và xsd cho 2 dịch vụ còn lại nên không có tập hợp đầy đủ tệp nào cho bất kỳ dịch vụ nào. Nhưng cuối cùng tôi đã có xsd và có thể tạo tệp .cs cho 2 trong số các dịch vụ, 2 dịch vụ còn lại sẽ theo tôi giả sử. Cảm ơn.
kfoster
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.