60

dostaję ten błąd, gdy zadzwonię usługę internetową:Zdalny serwer zwrócił błąd: (407) Proxy Authentication Required

„Zdalny serwer zwrócił błąd: (407) Proxy Authentication required”.

uzyskać ogólny pomysł i mogę uzyskać kod do pracy poprzez dodanie

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

lub za pomocą DefaultCredentials w kodzie. Mój problem polega na tym, że połączenie z serwisem sieciowym działa bez tego.

Wygląda na to, że istnieje nie kodujące rozwiązanie obejmujące Machine.config, ale co to jest? W tej chwili nie mogę dostać się do pliku machine.config w polu produkcyjnym, aby zobaczyć, jak to wygląda. Próbowałem aktualizować mój plik machine.config w następujący sposób, ale nadal dostaję błąd 407.

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

Odpowiedz

6

Prawdopodobnie maszyna lub plik web.config w prod ma ustawienia w konfiguracji; prawdopodobnie nie będziesz potrzebował tagu proxy.

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

Dzięki, to próbowałem i nadal pojawia się błąd "(407) Wymagane uwierzytelnienie Proxy". Czy dodanie wpisanej sekcji zatrzymuje błąd? Jedyne, co działa na pewno na moim lokalnym polu, jest ustawienie właściwości myProxy.Credentials w kodzie. – chris

19

Skontaktuj się ze swoim ekspertem od firewall. Otwierają zaporę dla serwerów PROD, więc nie ma potrzeby korzystania z serwera proxy.

Dzięki Twoja rada pomogła mi rozwiązać mój problem:

Gdyby ustawić poświadczenia w dwóch miejscach, aby ominąć błędu 407:

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"); 

i voila!

+0

Dzięki @ Werner-du-Toit. Dokładnie tego potrzebowałem. –

+0

uirTradeStream? –

2

Miałem podobny problem z serwerem proxy. W moim przypadku to wystarczyło, aby dodać:

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"); 

Jest sukces.

+0

uirTradeStream? –

+0

Witaj, używając tego kodu, ale nie działa on w webRequest.Proxy = WebRequest.DefaultWebProxy; i uzyskanie wyjątku: (407) Wymagane uwierzytelnienie proxy. proszę pomóżcie – user1196392

47

Poniższy kod nie wymaga sztywnego kodowania poświadczeń.

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

To działało idealnie dla mnie. Jeśli nie chcesz, aby kod był twardy, nazwę użytkownika i hasło wypróbuj najpierw. – sapbucket

+0

Świetne rzeczy działały dobrze dla mnie! :) – Funky

+0

Świetne rzeczy działały dobrze dla mnie! –

109

Wystarczy dodać ten config

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

To rozwiązuje mój problem. Dziękuję Ci! –

+0

Serdecznie zapraszamy. –

+0

Dla zainteresowanych, to było dokładnie to, czego potrzebowałem wewnątrz aplikacji konsoli/usług sieciowych NetSuite od (co wydaje się być) ograniczenia firewall/proxy. – dah97765

Powiązane problemy