0

다음은 내가 만든 API 컨트롤러의 단순화 된 버전입니다.ApiController 내에서 HTTP 요청을 만들 수 없습니다.

public class SampleController : ApiController 
{ 
    [System.Web.Http.HttpGet] 
    public string Test(string url) 
    { 
     try 
     { 
      using (WebClient webClient = new WebClientEx()) 
      { 
       return webClient.DownloadString(url); 
      } 
     } 
     catch (Exception ex) 
     { 
      return string.Empty; 
     } 
    } 

완벽하게 유효한 URL이 주어지면 "원격 이름을 확인할 수 없음"이라는 WebException이 표시됩니다.

동일한 URL을 사용하여 LinqPad에서 동일한 메소드를 실행하면 작동합니다. 나는 WebClient와 WebRequest를 동일한 결과로 시도했다.

분명히 말하자면,이 방법은 코드를 두드리며 코드를 단계별로 진행할 수 있고 관련 URL이이 애플리케이션의 일부가 아니기 때문에 이는 라우팅 문제가 아닙니다.

답변

0

나는 그것을 알아 냈다. 처음에는 일반 컨트롤러에서는 작동하지만 ApiController에서는 작동하지 않는 것으로 보아 버렸습니다. 이전의 "성공"을 재현하지 못한 후에는 마침내 시스템 프록시를 사용해야한다고 생각했습니다.

webClient.Proxy = WebRequest.GetSystemWebProxy(); 
관련 문제