60

나는 웹 서비스를 호출 할 때이 오류를 받고 있어요 :원격 서버에서 오류 반환 : (407) 프록시 인증 필요

을 ": (407) 프록시 인증 필요 원격 서버에서 오류를 반환했습니다."

나는 일반적인 생각을 나는 코드가

myProxy.Credentials = NetworkCredential("user", "password", "domain"); 

를 추가하거나 코드에서 DefaultCredentials를 사용하여 작업 할 수 있습니다. 내 문제는 웹 서비스에 대한 호출이 없으면 프로덕션에서 작동한다는 것입니다.

Machine.config와 관련된 코드가 아닌 솔루션이있는 것처럼 보이지만 그 이유는 무엇입니까? 지금은 프로덕션 박스의 machine.config 파일에 어떤 모습인지 알 수 없습니다. 다음과 같이 machine.config를 업데이트하려고 시도했지만 여전히 407 오류가 발생합니다.

<system.net> 
    <defaultProxy enabled="true" useDefaultCredentials="true"> 
     <bypasslist> 
      <clear /> 
     </bypasslist> 
     <proxy proxyaddress="myproxy:9000" 
       usesystemdefault="false" 
       bypassonlocal="true" 
       autoDetect="False" /> 
    </defaultProxy> 
</system.net> 

답변

6

아마도 prod의 machine 또는 web.config에는 구성 설정이 있습니다. 프록시 태그가 필요하지 않을 것입니다.

<system.net> 
    <defaultProxy useDefaultCredentials="true" > 
     <proxy usesystemdefault="False" 
       proxyaddress="http://<ProxyLocation>:<port>" 
       bypassonlocal="True" 
       autoDetect="False" /> 
    </defaultProxy> 
</system.net> 
+0

감사 config (설정)에 추가, 나는이 시도하고 난 여전히 "(407) 프록시 인증 필요"오류가 발생합니다. 목록에있는 섹션을 추가하면 오류가 중지됩니까? 내 로컬 상자에서 확실히 작동하는 유일한 방법은 코드에서 myProxy.Credentials 속성을 설정하는 것입니다. – chris

19

방화벽 전문가에게 문의하십시오. 프록시를 사용할 필요가 없도록 PROD 서버에 대한 방화벽을 엽니 다.

HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest; 
webRequest.Proxy = WebRequest.DefaultWebProxy; 
webRequest.Credentials = new NetworkCredential("user", "password", "domain"); 
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain"); 

봐라 :

가 407 오류를지나 얻으려면 두 위치에서 자격 증명을 설정하는했다 :

덕분에 당신의 끝은 내 문제를 해결 도움이!

+0

감사합니다. @ Werner-du-Toit. 이것은 내가 필요한 것입니다. –

+0

uirTradeStream? –

2

비슷한 프록시 관련 문제가있었습니다. 내 경우는 추가에 충분했다 :

webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain"); 
3
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest; 

webRequest.Proxy = WebRequest.DefaultWebProxy; 

webRequest.Credentials = new NetworkCredential("user", "password"); 

webRequest.Proxy.Credentials = new NetworkCredential("user", "password"); 

그것은 성공이다.

+0

uirTradeStream? –

+0

안녕하세요,이 코드를 사용하지만 webRequest.Proxy = WebRequest.DefaultWebProxy에서 작동하지 않습니다. (407) 프록시 인증이 필요합니다. 제발 도와주세요 – user1196392

47

다음 코드에서는 자격 증명을 하드 코딩 할 필요가 없습니다.

service.Proxy = WebRequest.DefaultWebProxy; 
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ; 
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; 
+0

이것은 나를 위해 완벽하게 일했습니다. 사용자 이름과 암호를 하드 코딩하지 않으려면이 옵션을 먼저 시도하십시오. – sapbucket

+0

좋은 물건은 나를 위해 잘 일했다! :) – Funky

+0

좋은 물건은 나를 위해 잘 일했다! –

109

그냥이

<system.net> 
    <defaultProxy useDefaultCredentials="true" > 
    </defaultProxy> 
</system.net> 
+0

이 해결사 내 문제. 고맙습니다! –

+0

환영합니다. –

+0

관심있는 사람들은 NetSuite 콘솔/웹 서비스 응용 프로그램 (방화벽 서비스)에서 방화벽/프록시 제약 조건이 필요한 것입니다. – dah97765

관련 문제