2011-02-04 30 views
2

我有一個應用程序,我需要發送2個Web請求到同一個Url,但來自不同的源IPEndpoints。ServicePoint不是唯一的本地IPEndpoint

這可以很簡單的與做類似的第一個連接:

Dim myWebRequest As Net.HttpWebRequest = Net.WebRequest.Create(MyUrl) 
myWebRequest.ServicePoint.BindIPEndPointDelegate = MyBindIPEndPointFunction 

委託函數MyBindIPEndPointFunction叫我給它正確IPEndpoint,一切工作正常。

但是,在第二個請求中,因爲已經有一個ServiceLocal的Url,委託函數MyBindIPEndPointFunction沒有被調用,所以我沒有辦法告訴第二個Web請求綁定到不同的IPEndpoint。

因爲網絡請求是SSL,所以使用Net.TcpClient對象並不容易,因爲我必須處理SSL。

理想情況下,我想強制HttpWebRequest創建一個正常的連接,並關閉它,一旦它完成它的方式 - 沒有僱用任何ServicePoint - 這可能嗎?我也希望這是所有線程安全和非阻塞,因此我可以在許多線程中啓動請求(目前這些線程都使用相同的ServicePoint)。

謝謝。

回答

1

總是可以在代碼中設置你的終點,只是創建兩個不同的變量名和相同的URL

Private binding1 As New BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly) 
    Private binding2 As New BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly) 
Private WithEvents _Misc1 As Service_Misc.Misc_CallsClient = New Misc_CallsClient(binding1, New EndpointAddress("http://localhost:61928/Misc_Calls.svc")) 
Private WithEvents _Misc2 As Service_Misc.Misc_CallsClient = New Misc_CallsClient(binding2, New EndpointAddress("http://localhost:61928/Misc_Calls.svc")) 
+0

我知道這個問題是有點老了,只是想我會,如果你沒有添加potentional答案找到解決方案 – Jim 2011-05-25 17:06:52