2009-04-29 48 views

Trả lời

10

Tôi khuyên bạn nên thiết lập nhiều điểm cuối cho Dịch vụ. Thêm điểm cuối bằng cách sử dụng webHttpBinding để nhận phiên bản dịch vụ XML. Nếu điều này được thực hiện đúng, phản hồi mà bạn sẽ nhận được từ dịch vụ giống hệt với điểm cuối basicHttpBinding, nhưng không có phí SOAP.

Ngoài ra, bạn không thể gọi dịch vụ web SOAP trực tiếp từ trình duyệt vì nó yêu cầu một biểu mẫu đăng bài. Bạn có thể sử dụng một công cụ để kiểm tra nó bằng cách sử dụng SOAP, mặc dù tôi khuyên bạn nên Soap UI. Nó được viết bằng Java nhưng tôi cố gắng không giữ nó chống lại nó. :)

36

Bạn sẽ cần phải thêm WebGetAttribute phương pháp của bạn như sau mẫu

[OperationContract] 
[WebGet(UriTemplate = "/placesList/{userId}", 
ResponseFormat = WebMessageFormat.Xml)] 
List<Places> GetAllPlacesForUser(String userId) 
{ 
    string xml = ""; 
    // build xml here 
    return xml; 
} 

Bây giờ trong trình duyệt, bạn có thể gọi phương thức như thế này

http://localhost:8085/GeoPlacesDataService/placesList/10
nơi 10 là tham số userId.

Lưu ý: Để thêm WebGetAttribute bạn phải tham khảo System.ServiceModel.Web namespace được tìm thấy trong một hội đồng riêng biệt

+6

Webget không hoạt động đối với tôi. IE cho tôi thấy "yêu cầu xấu". – Josh

6

Sau khi thêm đoạn mã trên, tài sản thiết bị đầu cuối phải được sửa đổi trong web.config, binding="webHttpBinding"behaviorConfiguration="webHttp".

+3

Bạn có nhớ chỉ định các thẻ có chứa các thuộc tính này không? Hoặc nó sẽ rất tốt nếu bạn cung cấp cho chúng tôi tệp web.config của bạn. –

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