2011-02-04 5 views
2

동일한 URL에 2 개의 웹 요청을 보내야하지만 다른 소스 IPEndpoints에서 보낼 필요가있는 응용 프로그램이 있습니다.ServicePoint가 로컬 IPEndpoint에 고유하지 않습니다.

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

위임 기능 MyBindIPEndPointFunction가 호출되고 나는 그것이 올바른 IPEndPoint로, 모든 것이 잘 작동 제공 :

처럼 뭔가를 수행하여 첫 번째 연결로 충분히 간단 할 수 있습니다.

두 번째 요청에서이 URL에 대한 ServicePoint가 이미 있으므로 대리자 함수 MyBindIPEndPointFunction이 호출되지 않으므로 다른 IPEndpoint에 바인딩하는 두 번째 웹 요청을 알릴 방법이 없습니다.

웹 요청이 SSL이기 때문에 SSL을 처리해야하므로 Net.TcpClient 객체를 대신 사용하는 것은 쉽지 않습니다.

이상적으로 나는 HttpWebRequest를 강제로 일반 연결을 만들고 일단 완료하면 ServicePoint를 사용하지 않고이 방법을 사용하는 것이 좋습니다. 가능합니까? 또한이 스레드를 모두 안전하고 비 차단으로 만들어서 많은 스레드 (현재는 모두 동일한 ServicePoint를 사용하는 스레드)에서 요청을 실행할 수 있습니다.

감사합니다. 당신은하지 않았다 경우

답변

1

항상 코드에서 엔드 포인트를 설정하고 단지 다른 변수 이름과

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

내가이 질문은 조금 오래 알고 같은 URL을 두를 만들 수 있습니다, 그냥 생각 나는 potentional 대답을 추가 아직 해결책을 찾으십시오 – Jim

+0

답장을 보내 주셔서 감사합니다 Jim. 결국 나는 TCPClient를 작성하고 SSLStream 객체를 사용했습니다. (나는 존재하지 않았습니다.) 작동하는 것이 있습니다. 그래도 아이디어가 재미있어 보입니다. – Panafe

+0

문제 없습니다. 희망은 그것이 미래에 도움이됩니다. – Jim

관련 문제