program tip

기본 자격 증명을 사용하려면 기본 프록시를 어떻게 설정해야합니까?

radiobox 2020. 11. 26. 08:08
반응형

기본 자격 증명을 사용하려면 기본 프록시를 어떻게 설정해야합니까?


다음 코드가 저에게 효과적입니다.

var webProxy = WebProxy.GetDefaultProxy();
webProxy.UseDefaultCredentials = true;
WebRequest.DefaultWebProxy = webProxy;

불행히도 WebProxy.GetDefaultProxy()더 이상 사용되지 않습니다. 내가 또 무엇을해야합니까?

(app.config를 사용하여 defaultProxy 설정을 설정하는 것은 내 배포에서 허용되지 않습니다)


.NET 2.0에서는이 작업을 수행 할 필요가 없습니다. 웹 요청에서 Proxy 속성을 명시 적으로 설정하지 않으면 정적 WebRequest.DefaultWebProxy의 값을 사용합니다. 모든 후속 WebRequest에서 사용중인 프록시를 변경하려는 경우이 정적 DefaultWebProxy 속성을 설정할 수 있습니다.

WebRequest.DefaultWebProxy의 기본 동작은 Internet Explorer에서 사용하는 것과 동일한 기본 설정을 사용하는 것입니다.

현재 사용자에게 다른 프록시 설정 을 사용 하려면 코드를 작성해야합니다.

WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/");
webRequest.Proxy = new WebProxy("http://proxyserver:80/",true);

또는

WebRequest.DefaultWebProxy = new WebProxy("http://proxyserver:80/",true);

또한 프록시의 개체 모델에는 대상 호스트 이름에 따라 프록시가 다를 수 있다는 개념이 포함되어 있음을 기억해야합니다. 이는 webRequest.Proxy의 속성을 디버깅하고 확인할 때 약간 혼란 스러울 수 있습니다. 요구

webRequest.Proxy.GetProxy(new Uri("http://google.com.au")) 사용되는 프록시 서버의 실제 세부 사항을 확인하십시오.

프록시 사용을 설정할 수 있는지 webRequest.Proxy또는 WebRequest.DefaultWebProxy = null금지 할 수 있는지에 대한 논쟁이있는 것 같습니다 . 이것은 나를 위해 잘 작동하는 것처럼 보이지만 new DefaultProxy()필요한 동작을 얻기 위해 매개 변수없이 설정할 수 있습니다. 확인해야 할 또 다른 사항은 응용 프로그램 구성 파일에 프록시 요소 가있는 경우 .NET Framework가 Internet Explorer의 프록시 설정을 사용 하지 않는다는 입니다.

MSDN Magazine 기사 .NET에서 자동 구성으로 사용자 부담을 덜어 줍니다. 내부에서 일어나는 일에 대한 자세한 내용을 제공합니다.


브라이언 Genisio는 달리, 사람, 사람들을 위해 있는 애플리케이션의 설정 파일의 내용을 설정할 수 : - 코드에서 아무것도하지 않습니다. 대신 이것을 app.config / web.config에 추가하십시오.

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

기본 자격 증명을 사용하기위한 실제 및 실제 기본값은 "true"여야합니다. 이 문제는 개발자, 사용자, IT 담당자 등 많은 사람들을 혼란스럽게하는 것을 보았습니다.

자세한 내용은 여기를 참조하십시오 .- http://sticklebackplastic.com/post/2007/01/26/Poxy-proxies.aspx

업데이트 : Microsoft가 useDefaultCredentials의 기본값을 false에서 true로 변경하여이 모든 문제가 사라지고 .NET 앱이 "작동"하도록이 문제 / 아이디어를 만들었습니다. 동의하면 투표하십시오 :
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2397357-fix-it-so-that-net-apps-can-access-http-thru- 인증


WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;

이렇게하면에서 DefaultWebProxy를 통해 수행 한 것과 유사한 효과 인 기본 자격 증명을 사용하게됩니다 UseDefaultCredentials = true.

따라서 새로 생성 된 모든WebRequest 인스턴스는 프록시의 기본 자격 증명을 사용하도록 구성된 기본 프록시를 사용합니다.


Reflection을 사용하여 UseDefaultCredentials코드 -Property를 "true" 로 설정할 수 있습니다.

System.Reflection.PropertyInfo pInfo = System.Net.WebRequest.DefaultWebProxy.GetType().GetProperty("WebProxy", 
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

((System.Net.WebProxy)pInfo.GetValue(System.Net.WebRequest.DefaultWebProxy, null)).UseDefaultCredentials = true;

이 스레드는 오래되었지만 최근에 defaultProxy 문제를 우연히 발견했으며 다른 사람들에게 도움이 될 수 있습니다.

Andrew가 제안한대로 구성 설정을 사용했습니다. 배포 할 때 고객이 'defaultProxy'구성을 설정할 수있는 권한이 충분하지 않다는 오류를 받았습니다.

이 구성을 설정할 수있는 권한이없는 이유와 이에 대해 수행 할 작업을 알지 못하는 경우 방금 제거했지만 여전히 작동했습니다. 따라서 VS2013에서는이 문제가 해결 된 것 같습니다.

그리고 우리가 그것에있는 동안 :

    WebRequest.DefaultWebProxy.Credentials = new NetworkCredential("ProxyUsername", "ProxyPassword");

자격 증명과 함께 기본 프록시를 사용합니다. 강제로 프록시를 사용하지 않으려면 DefaultWebProxy를 null로 설정하십시오 (원하는 지 모르겠지만).


이 질문 HttpClient 클래스를 사용할 때 프록시에 대해 인증 하는 방법에서 본 것처럼 일부 최신 응용 프로그램에서 구성이 다른 것처럼 보입니다 .

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
         <proxy usesystemdefault="True" />
    </defaultProxy>
</system.net>

https://msdn.microsoft.com/en-us/library/dkwyc043.aspx 에도 문서화되어 있습니다.


In my deployment I can't use app.config neither to embed what Andrew Webb suggested.
So I'm doing this:

    IWebProxy proxy = WebRequest.GetSystemWebProxy();
    proxy.Credentials = CredentialCache.DefaultCredentials;

    WebClient wc = new WebClient();
    wc.UseDefaultCredentials = true;
    wc.Proxy = proxy;

Just in case you want to check my IE settings:

enter image description here


This is the new suggested method.

WebRequest.GetSystemWebProxy();

Is need in some systems set null the Proxy proprerty:

Net.WebRequest.DefaultWebProxy.Credentials = System.Net.CredentialCache.DefaultCredentials Dim request As WebRequest = WebRequest.Create(sRemoteFileURL) request.Proxy = Nothing

It's a bug.

참고URL : https://stackoverflow.com/questions/299940/how-should-i-set-the-default-proxy-to-use-default-credentials

반응형