2010-08-09 8 views
14

Tôi có một SOAP Webservice có sẵn trên nhiều máy chủ, do đó có nhiều điểm cuối. Tôi muốn tránh thêm nhiều tài liệu tham khảo dịch vụ (C# SOAP Port Clients) với các tên khác nhau chỉ để nói chuyện với các dịch vụ này, vì API là chính xác như nhau.Sử dụng Dịch vụ C# Tham khảo SOAP Máy khách với các URI Điểm cuối khác nhau

Có cách nào để định cấu hình URI điểm cuối trong thời gian chạy không?

Trả lời

4

Tôi cũng gặp khó khăn trong việc tìm kiếm trang này. Cuối cùng tôi chỉ mượn cấu hình ràng buộc và đã làm điều này:

private static wsXXXX.IwsXXXXClient wsXXXXClientByServer(string sServer) 
{ 
    // strangely, these two are equivalent 
    WSHttpBinding binding = new WSHttpBinding("WSHttpBinding_IwsXXXX"); 
    // WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message, false); 

    EndpointAddress remoteAddress = new EndpointAddress(new Uri(string.Format("http://{0}:8732/wsXXXX/", sServer)), new UpnEndpointIdentity("[email protected]")); 

    return new wsXXXX.IwsXXXXClient(binding, remoteAddress); 
} 
23

tôi sử dụng những điều sau đây mà các công trình lớn:

 ServiceReference1.wsSoapClient ws= new ServiceReference1.wsSoapClient(); 
     ws.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://xxx/myservice.asmx"); 
+0

tôi nhận được lỗi sau, khi tôi cố gắng này có kết cục khác nhau: "phiên bản thông điệp không được nhận . " Bạn có bất kỳ ý tưởng tại sao? – Preexo

+0

Một câu hỏi bổ sung, nên tôi ** (A) ** tạo một thể hiện lớp 'wsSoapClient()' và sử dụng nó mỗi lần tôi muốn gọi một WebMethod hoặc ** (B) ** sử dụng câu lệnh 'using' để nhanh chóng theo yêu cầu và giải phóng nó càng sớm càng tốt? – dialex