WebClient를 사용하여 다음과 같은 방법으로 일부 리소스를 다운로드하고 있습니다.
Stream stream;
try
{
WebClient webClient = new webClient();
stream = webClient.OpenRead(MyResourceUri);
}
catch (Exception)
{
return null;
}
return stream;
WPF 응용 프로그램에서이 작업을 수행하면 제대로 작동하고 적절한 스트림을 얻습니다.
When I WCF 서비스 호출에서이 작업을 수행하면 작동하지 않습니다. WebException이 발생하고 "원격 서버에 연결할 수 없습니다."
메시지가 표시됩니다. (내 컴퓨터 또는 회사 네트워크 내에서 호스팅되는 파일에 대해서는 작동하지만 웹의 모든 리소스에 대해서는 실패합니다). 이 서비스는 IIS7에서 호스팅됩니다.
지금까지 조사한 결과 차이점은 웹 프록시 때문입니다. WPF 응용 프로그램의 webclient.proxy는 IE에 설정된대로 프록시 설정을 참조하지만 WCF에있는 것은 아무것도 가지고 있지 않습니다.
그 이유는 무엇입니까? 그리고 더 중요한 것은 WCF의 WebClient에서 유사한 프록시 설정을 사용하도록하려면 어떻게해야합니까?
편집 : WebClient에서 프록시를 설정하고 WCF 서비스에서 작동했습니다
webClient.Proxy = new WebProxy(ProxyAddressFromIE);
여기에서 프록시 주소를 하드 코딩했습니다. 이를 얻기 위해 어떤 방법 / API가 있습니까? WCF 서비스와 WPF 애플리케이션에서 왜 다른가요?