2012-11-14 4 views
3

C# SignalR 앱 (서버의 콘솔 앱, 클라이언트의 winforms 앱)을 빌드하려고하는데 클라이언트와 서버가 모두있을 때 (Visual Studio에서) 훌륭하게 작동합니다. 같은 PC에 있지만 서버를 배포하고 클라이언트를 서버에 다시 지정할 때 시작하려고하면 "407 프록시 인증 필요"예외가 발생합니다. SignalR C# 클라이언트 407 프록시 인증 필요

 var _connection = new HubConnection("http://www.redacted.com:8088/"); 
     var _hub = _connection.CreateProxy("MyHub"); 
     _connection.Start().ContinueWith(task => 
     { 
      if (task.IsFaulted) 
       MessageBox.Show(string.Format("Could not connect - {0}", task.Exception.ToString())); 
     }).Wait(); 

나는 HubConnection가 자격 증명 속성이 있음을 발견하고, 그래서 표시된 경우 (프록시 처리 나는 웹 서비스와 함께 사용한 적이 몇 가지 코드를 replacating 시도 거라고 생각 ... 내 코드입니다 아래, 어디서 HTTP 요청을 밖으로 만든 다음 프록시 설정 및 자격 증명을 데리러),하지만 같은 예외가 발생합니다.

 var _connection = new HubConnection("http://www.redacted.com:8088/"); 

     var req = (HttpWebRequest)WebRequest.Create("http://www.google.com"); 
     var proxy = new WebProxy(req.Proxy.GetProxy(req.RequestUri).AbsoluteUri) {UseDefaultCredentials = true}; 
     _connection.Credentials = proxy.Credentials; 

     var _hub = _connection.CreateProxy("MyHub"); 
     _connection.Start().ContinueWith(task => 
     { 
      if (task.IsFaulted) 
       MessageBox.Show(string.Format("Could not connect - {0}", task.Exception.ToString())); 
     }).Wait(); 

나는 그들이 자신의 로컬 PC는 회사 외부에서 호스팅 원격 시스템에서 메시지를 수신 할 수 있도록하려면 클라이언트에 대한 일을 해요 몇 가지 작업이 필요합니다.

감사합니다.

+0

전체 소스 코드는 최종 해결책? – Kiquenet

답변

2

는 DefaultWebProxy을 설정하십시오 :

WebProxy wproxy = new WebProxy("new proxy",true); 
wproxy.Credentials = new NetworkCredential("user", "pass"); 
WebRequest.DefaultWebProxy = wproxy; 
+1

프록시를 연결 클래스로 추가하여 전역으로 설정할 필요가 없습니다. – davidfowl

+0

그게 좋은 생각입니다;) –

관련 문제