2011-12-21 36 views

Trả lời

0

Trong WCF khi bạn tạo ChannelFactory, bạn có thể chỉ định điểm cuối (hoặc địa chỉ IP mà bạn muốn kết nối).

Dim factory As ChannelFactory(Of IChatServiceChannel) 
factory = New DuplexChannelFactory(Of IChatServiceChannel)(callbackObject, binding, endpoint) 
Dim Channel = factory.CreateChannel() 

Bạn có thể kết nối với nhiều IP khác nhau theo ý muốn bằng cách chỉ định các điểm cuối khác nhau.

+0

không phải là điểm kết thúc mà là điểm bắt đầu để khởi tạo yêu cầu SOAP. @RyanFishman –

+1

Bên cạnh đó, anh ấy nói anh ấy đang sử dụng một tài liệu tham khảo web, vì vậy anh ấy không thể sử dụng kỹ thuật của bạn. –

2

Tôi chưa bao giờ làm điều này. Có vẻ phức tạp.

Trước tiên, hãy đọc Ways to Customize your ASMX Client Proxy để tìm hiểu kỹ thuật cơ bản ghi đè đối tượng GetWebRequest của lớp proxy của bạn.

Bạn sẽ cần ghi đè GetWebRequest để bạn có thể lấy ServicePoint đang được sử dụng để đưa ra yêu cầu. Bạn sẽ đặt thuộc tính BindIPEndPoint cho người được ủy quyền trỏ đến một phương thức của bạn sẽ trả lại Địa chỉ IP chính xác.

public partial class Service1 
{ 
    protected override WebRequest GetWebRequest(Uri uri) 
    { 
     HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri); 
     request.ServicePoint.BindIPEndPointDelegate = ReturnSpecificIPAddress; 
     return request; 
    } 

    private IPEndPoint BindIPEndPoint(
     ServicePoint servicePoint, 
     IPEndPoint remoteEndPoint, 
     int retryCount) 
    { 
     return new IPEndPoint(IPAddress.Parse("10.0.0.1"), 80); 
    } 
} 
Các vấn đề liên quan